【问题标题】:jQuery - $.post doesn't post to phpjQuery - $.post 不会发布到 php
【发布时间】:2013-12-09 00:51:28
【问题描述】:

我正在尝试使用 jQuery 使用以下代码将变量发布到同一页面

file.js

$('#sidebar-nav').on('click', 'li', function() {
    var theID = $(this).attr('id');
    $.post(location.href, {theID: theID});
});

file.php

<?php
    if (isset($_POST['theID'])) {
    // do something
    }
?>

<html>
    <!-- the rest of the page -->
</html>

更新

theID 由于某种原因没有发布到 php 文件中。我在if 语句中的代码不会执行。此外,我在相同的 js 和相同的 php 文件中对其他 removeID 使用了完全相同的方法,它适用于 removeID,但不适用于 theID

并澄清location.href 在这种情况下是什么;是file.php

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 应该发生什么?像这样使用$.post() 应该向您的PHP 发出请求,但是浏览器中的页面不会有可见的变化。 “这不起作用”是指您的 PHP 没有收到请求,还是...?
  • location.href 是什么?我们无法猜测您的变量。它们是可变的。
  • 抱歉声明不清楚,我更新了问题。我的 php 文件没有收到请求。
  • 还有{"theID": theID}
  • Jimbo的意思是location.href在你使用的时候的当前值是多少...

标签: javascript php jquery post


【解决方案1】:

要将 ajax 请求发送到同一页面,您可以保留 url 参数为空/删除

试试

<script type="text/javascript">


           $.post({
                  theID: theID,
                  success: function (data) {
                     alert("Data Loaded:");
                  }
              });

</script>

【讨论】:

  • 那行不通。 $.post() 期望第一个参数是 URL,除非你说 the $.post() documentation page 上没有提到的功能。但即使它期望一个对象,它也不会知道与 success 相同的对象中有一个名为 theID 的属性。
【解决方案2】:

你在这一行有一个语法错误:

var theID = $(this).attr('id'));
//           -----------------^

您需要删除额外的关闭)。或者直接访问属性时最好不要调用两个函数:

var theID = this.id;

或者更好的是,因为 theID 仅在一个地方使用,所以完全摆脱该变量:

$.post(location.href, {theID: this.id});

【讨论】:

  • 抱歉,当我将代码复制到此处时,额外关闭 ) 是一个错误。而且我确实需要单独行上的 var 来解析 ID。
  • “我确实需要在单独的行上使用 var 来解析 ID。” - 好的,我的建议是基于显示的代码,您无需执行任何其他操作与变量。但是this.id 还是比$(this).attr('id') 好。
  • 感谢您告诉我检索 ID 的更好方法。你知道我的php文件没有收到请求的原因吗?
猜你喜欢
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 2011-05-13
相关资源
最近更新 更多