我正在研究使用jquery ajax实现jsonp的示例。
有人可以解释为什么回调功能' customcb'在下面的例子中没有被调用,我很困惑。
从客户端应用程序进行$ .ajax调用ASP.NET MVC服务器应用程序,下面是客户端代码
$().ready(function ()
{
$.ajax({
url: 'http://localhost:55632/',
type: 'GET',
dataType: 'jsonp',
jsonp: 'cbqs',
jsonpCallback: 'customcb',
success: function (data)
{
alert('success');
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
alert(errorThrown);
}
});
function customcb()
{
alert('customcb');
}
});
以下是在服务器应用程序中编写的简单ASP.net MVC操作
public class HomeController : Controller
{
public string Index()
{
Emp x = new Emp
{
fname = "first name",
lname = "last name"
};
string json = JsonConvert.SerializeObject(x);
Response.ContentType = "application/x-javascript";
string str = "customcb(" + json + ")";
return str;
}
..............
..............
预期结果:两者都取得了成功'和' customcb'应显示警告信息。
实际结果:仅成功'警报信息正在显示。
注意:我能够从success函数访问返回的数据,并且没有JS错误。
请让我知道为什么' customcb'警报信息未显示。
答案 0 :(得分:1)
将jsonpCallback函数移出“$()。ready(function()”代码块。
function customcb()
{
alert('customcb');
}
答案 1 :(得分:0)
由于你正在处理jsonp,你的服务器响应应该是以下形式:
customcb({<JSON content>});
你的jsoncallback应该是:
function customcb( o ) {
console.log( o );
}