如何在$ajax POST中传递参数?

我已经按照这个链接中的教程进行了操作。在下面的代码中,由于某些原因,数据没有作为参数附加到url中,但如果我使用/?field1="hello"直接将它们设置到url中,就可以了。

$.ajax({
        url: 'superman',
        type: 'POST',
        data: { field1: "hello", field2 : "hello2"} ,
        contentType: 'application/json; charset=utf-8',
        success: function (response) {
            alert(response.status);
        },
        error: function () {
            alert("error");
        }
    }); 
解决办法

我建议你在简单的情况下使用jQuery的$.post$.get语法。

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

如果你需要捕捉失败的情况,就这样做。

$.post('superman', { field1: "hello", field2 : "hello2"}, 
    function(returnedData){
         console.log(returnedData);
}).fail(function(){
      console.log("error");
});

此外,如果你总是发送一个JSON字符串,你可以使用$.getJSON或$.post,在最后多加一个参数。

$.post('superman', { field1: "hello", field2 : "hello2"}, 
     function(returnedData){
        console.log(returnedData);
}, 'json');
评论(3)

尝试使用GET方法。

var request = $.ajax({
    url: 'url',
    type: 'GET',
    data: { field1: "hello", field2 : "hello2"} ,
    contentType: 'application/json; charset=utf-8'
});

request.done(function(data) {
      // your success code here
});

request.fail(function(jqXHR, textStatus) {
      // your failure code here
});

使用POST方法,你无法看到URL中的参数。

编辑。

淘汰通知: jqXHR.success(), jqXHR.error(), 和 jqXHR.complete() 回调从jQuery 3.0开始被删除。你可以使用 jqXHR.done(), jqXHR.fail(), 和jqXHR.always()代替。

评论(0)

POST请求中,参数是在请求的正文中发送的,这就是为什么你在URL中看不到它们。

如果你想看到它们,请改变

    type: 'POST',

改为

    type: 'GET',

请注意,浏览器都有开发工具,可以让你看到你的代码所发出的完整请求。在Chrome中,它在"网络"面板中。

评论(0)