1

我正在为此苦苦挣扎。

我正在尝试使用 $.ajax 将元素数据传递给我的 php 文件,它总是返回空。

这是我的代码:

    strJson = '{'
    $.each(this_side.data(), function(i, v) {
        strJson += i + ":'" + v + "',";
    });
    strJson += term_id + ":'" + term_id + "',";
    strJson += new_page_num + ":'" + new_page_num + "'";
    strJson += '}';

    alert(strJson); // this works

    $.ajax({
        url: 'my url here',
        type: 'post',
        data: strJson,
        success: function(data){
            alert(data);
        }
    });

$_POST 的 Outpot 是一个空数组。它不工作。

我在这里想念什么???

4

5 回答 5

1

不要打扰dataTypeand contentType,jQuery 应该自己处理。返回什么this_side.data()?如果它是一个数组,那么你i在循环中的变量$.each是一个数字,而你的 JSON 只是格式错误。尝试

$.each(this_side.data(), function(i, v) {
    strJson += "'" + i + "':'" + v + "',";
});

然后您还应该发布一个 JSON 对象,而不是 JSON 字符串:

 $.ajax({
    data : JSON.parse( strJson ),
    ...
 })

this_side.data()当返回一个对象并且键具有像“-”这样的“特殊”字符时,这也考虑在内。

如果this_side.data()返回一个对象,则以下方法更容易:

$.ajax({
    url: 'my url here',
    type: 'post',
    data: $.extend( 
            this_side.data(),
            {'term_id': term_id, 'new_page_num' : new_page_num }
          ),
    success: function(data){
        alert(data);
    }
});
于 2013-03-28T08:55:09.070 回答
0

尝试这个:

$.ajax({
    url: 'my url here',
    type: 'POST',
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    data: { param: strJson },
    success: function(data){
        alert(data);
    }
});
于 2013-03-28T08:44:31.137 回答
0

也尝试添加dataType:"json"

$.ajax({
    url: 'my url here',
    type: 'post',
    data: $.parseJSON(strJson),
    dataType: "json",
    success: function(data){
        alert(data);
    }
});

并在发送前解析strJsonwith 。$.parseJSON()

于 2013-03-28T08:44:31.717 回答
0

在 data 参数中,您发送的是 json 格式的字符串。

尝试以以下格式发送数据。

strJson='name=Will&address=florida';

让我知道这个是否奏效。

于 2013-03-28T08:56:26.637 回答
0

由于 lordVlad 评论而更新了答案:

strJson = '{'
    $.each(this_side.data(), function(i, v) {
        strJson += i + ":'" + v + "',";
    });
    strJson += "'"+ i + "':'" + v + "',";
    strJson += new_page_num + ":'" + new_page_num + "'";
    strJson += '}';

尝试在dataType您的代码中添加和“contentType”

$.ajax({
        url: 'my url here',
        type: 'post',
        data : JSON.parse(strJson),
        dataType: 'json',
        success: function(data){
            alert(data);
        },
        contentType: "application/json; charset=utf-8"
    });

您也可能需要查看官方文档:http ://api.jquery.com/jQuery.post/

于 2013-03-28T08:40:50.820 回答