【问题标题】:Jquery Ajax POST Request sending data issueJquery Ajax POST请求发送数据问题
【发布时间】:2013-07-22 15:52:26
【问题描述】:

我进行了很多搜索,但无法找到有效的解决方案来解释为什么我的发布请求没有将其数据发送到服务器。我可以在没有数据的情况下发送请求,并从服务器获取结果,但我无法将数据发送到服务器。我已将其缩小到“数据”属性,并假设我只是做错了什么。谢谢。

客户

var scriptURL = "default/scripts/serverside/Scripts.aspx";
$.ajax({
    type: "POST",
    url: baseURL + scriptURL + "/SaveItem",
    data: "{}",                                           //works (to return a result)
    //data: "{sendData: '" + dataPackage + "'}",            //does not work
    //data: dataPackage,                                    //does not work
    //data: { sendData: dataPackage },                      //does not work
    //data: { "sendData": dataPackage },                    //does not work
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (result) {
        de("server result:" +result);
    }
});

服务器

[WebMethod]
public static string SaveItem(string sendData)
{
    string result = "received: " + sendData;
    return result;
}

请帮忙,我似乎无法让它工作并且知道它一定是一个语法问题......

我发现了类似的问题(但没有有效的答案):

【问题讨论】:

  • 你能打开浏览器的 Javascript 调试器并打开一个带有此编辑的页面吗: $.post('baseURL + scriptURL + "/SaveItem"', { sendData: 'foobar'} );
  • 您应该将数据作为字符串传递。 Jquery 将序列化字符串本身。另见:stackoverflow.com/questions/1061884/…
  • @chrisHardie,用引号中的“dataPackage”运行它并检查调试器,它只是说我将 sendData=dataPackage 作为一个大字符串发送...
  • @RMK,我只是尝试将整个内容作为字符串传递,但它不起作用......
  • 请不要在您的标题或问题答案的摘要中添加[solved] - 答案本身服务于后者,而复选标记服务于前者。如果您想在其他回答者提供的内容之外添加更多详细信息,请在详细信息中添加您自己的答案。

标签: javascript ajax jquery post


【解决方案1】:

试试这个:

$.ajax({
   type: "POST",
   url: baseURL + scriptURL + "/SaveItem",
   data: $.toJSON({ sendData: dataPackage }),                      
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function (result) {
       de("server result:" +result);
   }
});

toJSON 会将您的 JS 对象转换为正确的 JSON 字符串。你也可以使用JSON.stringify

【讨论】:

  • 这是我得到的最接近的,但现在数据正在传递到服务器(萤火虫这么说),但我无法得到结果的响应。我假设,您不能简单地将 JSON 传入对象声明为字符串...
  • 另外,我必须添加 ', ScriptMethod(ResponseFormat = ResponseFormat.Json)]'
  • 酷! :) 很高兴你得到它!
【解决方案2】:

试试这个:

var scriptURL = "default/scripts/serverside/Scripts.aspx";
$.ajax({
    type: "POST",
    url: baseURL + scriptURL + "/SaveItem",
    data: {sendData: "string to send" }
    dataType: "json",
    success: function (result) {
        de("server result:" +result);
    }
});

【讨论】:

  • 我试过了,没用。但是,即使我发送任何内容,它仍然应该响应服务器收到的内容,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 2012-07-23
相关资源
最近更新 更多