美元.Post显示在console.log()中,但没有访问我的PHP页面上的变量


$.post showing in console.log() but no access to the variable on my php page

我对jquery相当缺乏经验。我的代码是

function edit(uID){ 
  var php = "body/weekly_deals.php";
  var data = {"edit" : "post is here"}
  $.post(php, data,function(response){
    console.log(response);
    });
 }

这是在WeeklyDeal.php中定义的。现在,在我的body/weekly_deals.php页面上,我var_dump($_POST['edit']),我得到NULL,但是在console.log中,我看到的值"post在这里"字符串?所以,我很困惑。它怎么可能在那里,而不是同时在那里?

我怀疑你误解了这是如何工作的。

我var_dump($_POST['edit']),我得到NULL

你表达你的问题的方式,听起来你没有看到你的console.log()空,这是什么发生,如果你有var_dump和ajax调用它。相反,听起来像是直接在浏览器中加载weekly_deals.php,由于这是一个GET请求,而不是POST请求,并且没有传递任何参数,因此返回空。

然而,在console.log中,我看到值"post is here"字符串

正确,因为javascript正在使用POST方法发出HTTP请求并传递一个参数。


我想你可能对HTTP请求是如何工作的感到困惑。为了分解它,你有一个以URI形式出现的资源——你知道这是web地址。您可以用几种不同的方式向它提问——GET、POST、PUT等。web浏览器在导航到页面时,会向资源发出GET请求。web服务器返回响应并呈现它。

当您发出AJAX请求时,就请求生命周期而言,您正在做一些非常相似的事情。当您发出请求时,服务器呈现响应并将其发回。这就是为什么您的console.log()具有您期望看到的内容—因为AJAX发出了服务器端期望获得的请求。当您在浏览器中直接导航到该页面时,它是错误的请求类型,因此您会看到错误的响应。