使用包含“???”的字符串提交jQuery.ajax数据,它将值更改为“jQuery19107363727174233645_1373301489648?”

页面 javascript
var model = {"NumberOfcpus":"2","NumberOfCores":"4","OSType":"Linux","Osversion":"???"};

        var id = 0;
        var success = false;
        //send to server:
        $.ajax(
            {
                async: false,data: JSON.stringify(model),dataType: "json",type: "post",url: serverSideURL

            });

实际发送到服务器的请求的内容

{"NumberOfcpus":"2","Osversion":"jQuery19107363727174233645_1373301489648?"}

怎么了?是字符串“???” jQuery中某种特殊控制词或某些东西?

谢谢.

解决方法

如果我仔细阅读其他答案中的错误评论,真正的问题在于,在将json-string传递给数据之前将其字符串化.数据需要一个包含查询的字符串(例如“a = asdf& b = qwer”)或包含它将成为查询的键和值的Object.而是传递类似'{“a”:“asdf”,“b”:“qwer”}’的字符串,包含不是查询的字符串化数组.它以某种方式设法转换服务器理解的数据,但显然也会触发该错误/功能.

解决方案1

如果要通过$_POST [‘a’]访问数据,以获取JSON对象中的键“a”:

$.ajax( {
    async: false,data: model,//Pass the Array itself to the function
    dataType: "json",url: serverSideURL
});

(Source; Cowboy on jQuery bugs)

解决方案2

如果要检索JSON字符串:

$.ajax( {
    async: false,data: {
      "MyLilString": JSON.stringify( model )
    }
    dataType: "json",url: serverSideURL
});

在这种情况下,$_POST [“MyLilString”]包含序列化的JSON,您可以使用json_decode().

(Source; Ajpiano on jQuery bugs)

一个消化

我从评论提取的另一个建议(但我现在无法找到-_-‘)是将jsonp设置为false.

$.ajax( {
    async: false,data: model
    dataType: "json",url: serverSideURL,jsonp: false
});

这应该会阻止jQuery将回调函数插入到请求体中.

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...