【问题标题】:PHP post with ajax doesn't work带有ajax的PHP帖子不起作用
【发布时间】:2018-08-24 12:25:26
【问题描述】:

我正在尝试使用 ajax 发送发布请求,但它不起作用,我很迷茫。请问我需要一些帮助...

index.php:

<button type="button" id="ajaxBtn">Test</button>

main.js:

$('#ajaxBtn').click(function() {
  $.ajax({
    url: test.php,
    type: "POST",
    data: {any : "any"},
    success: function() {
      window.location.href = "./test.php";
    }
  });
});

当我点击按钮时,我被重定向到 test.php 但是:

var_dump($_POST) // array(0) { } 

PS:我不想使用 GET 方法。

感谢大家的帮助。

【问题讨论】:

  • 在您的 test.php 中,执行 var_dump($_POST['any']);,这是您在 AJAX 函数中定义为 post 变量的变量。还在数据大括号后添加一个“,”,如下所示:data: {any : "any"},。此外,在这种情况下,数据变量需要设置为“:”而不是“=”。
  • 我看不出一个印刷错误应该如何获得支持。
  • 尝试数据:"test=1&test2=2",
  • 删除 windows.location 然后检查,它的工作,但成功后重定向到与 url 相同的页面
  • window.location.href = "./test.php"; 在您的 ajax 请求完成后执行。所以它不显示任何 POST 值是合乎逻辑的(因为它是一个新请求)。你到底想完成什么?如果你想用这些值重定向,AJAX 可能不是你的首选。

标签: javascript php jquery ajax post


【解决方案1】:

重定向发生在 ajax 执行之后。数据被发送到您的 test.php,然后浏览器被重定向到 test.php。如果您想查看 ajax 调用的结果,请不要重定向,而是显示结果。例如,您可以这样做:

success: function(data) {
  console.log(data);
  // here the result from test.php will be logged in the browser console
}

或者,您可以在成功调用中返回数据时将数据放在页面上。 $('#resultContainer').text(data);

也作为别人的指针:
1. URL 是一个字符串,所以把它放在引号里面 url: "test.php"
2. JS对象表示法使用冒号(:)

【讨论】:

    【解决方案2】:

    您是否在代码中插入了 jQuery。

    或者你可以在你的点击事件上尝试这个方法。

    $.post('url', { field1: "hello", field2 : "world"}, 
        function(returnedData){
             console.log(returnedData);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      相关资源
      最近更新 更多