gpt4 book ai didi

json - 使用 JSONP 数据类型的奇怪 JQuery $.Ajax() 行为 : How to fix?

转载 作者:行者123 更新时间:2023-12-01 01:29:09 25 4
gpt4 key购买 nike

这是一个有效的 JSON 请求:

$.ajax({
type: "POST",
url: "GetJSON",
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (j) {
myFunctionName(j);
}
});

另一个几乎相同的 JSONP 请求也有效:

$.ajax({
type: "GET",
url: "GetJSONP",
data: {},
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
success: function (j) {
myFunctionName(j);
}
});

现在,如果您将 success: 换成 jsonpCallback: 在第二个请求上,它会调用函数 myFunctionName 两次。服务器的结果是 myFunctionName( [jsondata] ),其中 [jsondata] 是 json 编码数据。

$.ajax({
type: "GET",
url: "GetJSONP",
data: {},
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
jsonpCallback: "myFunctionName"
});

在调用 myFunctionName 两次的第三个代码示例中我做错了什么?

答案:

在 ASP.NET MVC 3 中,我使用了这个:

public class JsonpResult : ActionResult
{
public override void ExecuteResult( ControllerContext c)
}

还有这个:

public static JsonpResult Jsonp(this Controller c, object d)
{
JsonpResult r = new JsonpResult();
r.Data = d;
// r.ExecuteResult(c.ControllerContext); <== mistake
return r;
}

还有这个:

public JsonpResult GetJSONP()
{
var service = new Service();
var data = service.Getdata();
return this.Jsonp(data);
}

错误已在评论中指出。显然 ASP.NET MVC 为您调用 ExecuteResult,因此手动调用它会将数据两次添加到结果中。

最佳答案

我从评论中得到的答案:

Are you sure your JSONP response isn't including myFunctionName in the output twice?

关于json - 使用 JSONP 数据类型的奇怪 JQuery $.Ajax() 行为 : How to fix?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4806738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com