Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 通过AJAX发送JSON POST请求_Jquery_Ajax_Json_Post_Backbone.js - Fatal编程技术网

Jquery 通过AJAX发送JSON POST请求

Jquery 通过AJAX发送JSON POST请求,jquery,ajax,json,post,backbone.js,Jquery,Ajax,Json,Post,Backbone.js,我正在使用POST向服务器提交数据,控制台中出现以下错误: POST localhost/myProject/webapp/setAccount 400(所需字符串参数'accountID'不存在) 用户将从组合框中选择帐户ID,这是应该在帖子中传递的内容 这是我的密码: accountSelected: function () { var accountSelected = $("#accountcombobox").val(); console.log("Selected Accoun

我正在使用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请求,这是我认为我正在做的事情,但似乎无法让它工作

编辑

谢谢你的回答,但是没有一个答案对我有效,仍然是同样的错误

我也在使用木偶和脊梁,这会影响它吗?

试试这个

data:{ accountSelected: accountSelected},
以及

在webapp/setAccount中

 echo  $_POST['accountSelected'];

您的数据应为key:value格式,因此:

编辑:更改为成功


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

不需要使用JSON.stringify,因为您已经提到了数据类型:'JSON',所以试试这个

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

缺少分号并且已经获得值的json没有neet来字符串化它第一个console.log实际输出什么?你能把你的代码放在JSFIDLE上吗?谢谢,但仍然得到完全相同的错误,还有什么我可以尝试的吗?在我的编辑中尝试代码(删除.done位),看看发生了什么相同的错误我担心-我使用的是主干和木偶-这会导致问题吗?如果我更改:data:{accountID:“Full”}我将不再得到错误-但显然它需要链接到组合框boxNo。对于
contentType:“application/json”
数据
需要是一个json字符串,而不是一个对象。这些都不适用于我-同样的错误,我也在使用Backbone.js和木偶,这可能会影响它吗?这是不正确的,JQuery文档声明“dataType”是服务器的预期返回类型。
“accountID=“+accountSelected,
是(或者如果应用了正确的转义)URL编码的数据。它与
contentType:“application/json”不匹配,
@Quentin您对一些答案的评论是不正确的。你能提供正确的答案吗?因为它对我也不起作用:(@BogdanMart-你看到顶部的大黄色“这个问题已经有答案”框了吗?点击链接。
$.ajax({
     url: myUrl,
     type: "POST",
     data: { accountSelected: accountSelected},
     dataType: "json",
     contentType: "application/json"
        })
     .done(function (data) {
     console.log("Response " +data.accountSelected);
     });
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);
       }

          });
        }