为什么这个jquery ajax请求可以使用get而不是post?

时间:2011-12-09 21:22:11

标签: php jquery ajax

$.ajax({
        url: 'test.php',
        type: 'GET',
        dataType: 'json',
        data: "last_name=SMITH&first_name=JOHN&middle_name=J",
        contentType: "application/json; charset=utf-8",
        success: function(response) {
            var len = response.length;
            for (var i = 0; i < len; i++) {
             var name = response[i].LASTNAME + ", " + response[i].FIRSTNAME + " " + response[i].MIDDLE
             var sysid = response[i].ORDERID
             $("<li></li>")
             .html("<a href='result.php?orderid=" + orderid + "'>" + name + "</a>")
             .insertAfter($("#questions-divider"));
             $("#questions").listview("refresh"); 
            }

        }
   });
});

这适用于GET。我用帖子试了一下,但失败了。我的php页面中有_POST。我将数据参数更改为:

data: '{ "last_name": "SMITH", "first_name": "JOHN", "middle_name": "J" }',

但这也失败了(有了get和post)。我的php页面返回它在我的有效负载中找不到last_name。 $_POST['last_name']永远不会在我的php页面中获取数据。使用GET发送它并且它可以工作(我将我的php更改为使用$_GET进行测试然后返回$_POST)。

编辑:我试过了,但没有帮助:Cant get jQuery ajax POST to work

编辑:还:jquery $.post empty array

编辑:我能够得到这样的结果。不知道格式化数据失败的原因:

//data: '{ "last_name": "SMITH", "first_name": "JOHN", "middle_name": "J" }',
    data: "last_name=SMITH&first_name=JOHN&middle_name=J",
    //contentType: "application/json; charset=utf-8",
    contentType: "application/x-www-form-urlencoded",

2 个答案:

答案 0 :(得分:3)

删除引号以使数据的值成为对象。应该阅读:

data: { "last_name": "SMITH", "first_name": "JOHN", "middle_name": "J" },

答案 1 :(得分:3)

这是我一直使用的简单的$ .ajax模板。它适用于一切。您的数据值应该是一个对象。

$.ajax({
    type: "POST",
    url: "ajax.php",                             // Your URL
    //data: "action=whatever&user=" + username,  // You can do it like this.
    data: {name: data, action: "whatever"},      // Or like this, Notice the Quotes
    dataType: "html",                            // The Return Type of the data
    success: function(xhr){                      // Success! :)
        alert("success, ajax post was success");
    },
    error: function (xhr, ajaxOptions, thrownError){ // Your a failure :(
        alert(xhr.status);
        alert(thrownError);
    }
});

您当前将字符串传递给数据,它需要是一个对象:

<强>此致:

data: '{ "last_name": "SMITH", "first_name": "JOHN", "middle_name": "J" }',

data: { "last_name": "SMITH", "first_name": "JOHN", "middle_name": "J" },