3

我正在尝试将一些 POST 数据 AJAX 到 PHP 页面,但数据未正确发送。我究竟做错了什么?

这是我的代码:

HTML

<a id="some_id">LINK</a>

阿贾克斯函数

mFunction(){    
    $("#some_id").click(function(){
        var thisId = $(this).attr('id');
        console.log(thisId);
        $.ajax({
        type : 'POST',
        url : 'magic.php',
        data: {"thisId" : thisId},
        dataType: "json",
        success:function(data){
        console.log(data);
       }
     });    
  });  
}

PHP

<?php$thatId = $_POST['thisId']; print_r($_POST); ?>

因此,一切都应该按照我的理解进行,但是出了点问题。在 console.log(data) 我得到了 ID 所以数据已经发送但是在 print_r 我得到一个 () 空数组的数组..

4

6 回答 6

4

你有dataType: "json",这样的 ajax 调用期待json响应,这就是为什么你没有看到任何响应。

利用json_encode();

echo json_encode($_POST);
于 2013-05-02T09:16:38.110 回答
1

魔法.php

echo json_encode($_POST);
于 2013-05-02T09:16:29.390 回答
1

如果$_POST是空的,这似乎是这里的情况,你应该看看你的配置文件,特别是variables_order设置。

例如,如果 variables_order 设置为,"SP"那么 PHP 将创建超全局变量 $_SERVER 和 $_POST,但不会创建 $_ENV、$_GET 和 $_COOKIE。设置为 "" 意味着不会设置超全局变量。

确保这"P"是此设置的一部分,即

variables_order = "GPCS"

进行此更改后重新启动服务器。

于 2013-05-02T09:31:16.673 回答
0

我认为这一行:

data: {"thisId" : thisId},

应该

data: {thisId : thisId},
于 2013-05-02T09:20:57.350 回答
0

魔法.php

echo json_encode($_POST);

html.html

 mFunction(){    
   $("#some_id").click(function(){
     var thisId = $(this).attr('id');
     console.log(thisId);
     $.ajax({
     type : 'POST',
     url : 'magic.php',
     data: {thisId: thisId},
     dataType: "json",
     success:function(data){
     console.log(data);
     }
    });    
  });  
}
于 2013-05-02T09:29:00.020 回答
0

当你向服务器请求参数时必须是对象,

数据:

{thisId: "abc"}

不是:

{"thisId": "abc"}

在这种情况下,为什么不给 thisId var 取一个不同的名称呢?

var thisId = $(this).attr('id');

var tId = $(this).attr('id');

并使用它:

$.ajax({
     type : 'POST',
     url : 'magic.php',
     data: {thisId: tId},
     dataType: "json",
     success:function(data){
     console.log(data);
     }
    });

它与传递给关键帖子的对象名称一致,我不确定它是否可以重复,但我不选择相同的名称。

于 2013-05-03T01:26:06.797 回答