通过AJAX发送JSON POST请求

时间:2014-02-28 12:12:23

标签: jquery ajax json post backbone.js

我正在使用POST向服务器提交数据,此错误出现在控制台中:

  

POST localhost / myProject / webapp / setAccount 400(必需字符串参数'accountID'不存在)

用户将从组合框中选择一个帐户ID,这是应该在帖子中传递的内容。

这是我的代码:

accountSelected: function () {

 var accountSelected = $("#accountcombobox").val();
 console.log("Selected Account: " + accountSelected);
     var myUrl = "webapp/setAccount";

     $.ajax({
         url: myUrl,
         type: "POST",
         data: accountSelected,
         dataType: "json",
         contentType: "application/json"
            })
         .done(function (data) {
         console.log("Response " + JSON.stringify(data));
         })
        }

第一个console.log按预期显示所选的帐户ID,因此我知道该值是正确的。我想将此值传递给POST请求,这是我认为我正在做的但似乎无法让它工作。

修改

感谢您的回复,但似乎没有任何答案对我有用,仍然是同样的错误。

我也在使用Marionette和Backbone,这会影响吗?

4 个答案:

答案 0 :(得分:-1)

试试这个,

data:{ accountSelected: accountSelected},

console.log("Response " + data); //removed JSON.stringify

在webapp / setAccount中,

 echo  $_POST['accountSelected'];

答案 1 :(得分:-2)

您的数据应该是关键:值格式,所以:

编辑:改为成功


$.ajax({
         url: myUrl,
         type: "POST",
         data:{
             accountID: accountSelected
         },
         dataType: "json",
         contentType: "application/json",
         success: function(data)
         {
                console.log("Response " +data.accountSelected);
         }
});

答案 2 :(得分:-2)

accountSelected: function () {

 var accountSelected = $("#accountcombobox").val();
 console.log("Selected Account: " + accountSelected);
     var myUrl = "webapp/setAccount";

     $.ajax({
         url: myUrl,
         type: "POST",
         data: "accountID="+accountSelected,
         dataType: "json",
         contentType: "application/json",
         success: function(result) {
             console.log("Response " + JSON.stringify(result));
          },
      error : function(request, textStatus, errorThrown) {
        alert('textStatus ' + textStatus);
        alert('errorThrown ' + errorThrown);
       }

          });
        }

答案 3 :(得分:-3)

不需要使用JSON.stringify因为你已经提到过dataType:'json'所以试试这个

$.ajax({
     url: myUrl,
     type: "POST",
     data: { accountSelected: accountSelected},
     dataType: "json",
     contentType: "application/json"
        })
     .done(function (data) {
     console.log("Response " +data.accountSelected);
     });