Jquery jsonp ajax回调无法正常工作

时间:2014-06-24 03:17:21

标签: jquery ajax jsonp

我正在研究使用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'警报信息未显示。

2 个答案:

答案 0 :(得分:1)

将jsonpCallback函数移出“$()。ready(function()”代码块。

function customcb() 
{
    alert('customcb');
}

答案 1 :(得分:0)

由于你正在处理jsonp,你的服务器响应应该是以下形式:

customcb({<JSON content>});

你的jsoncallback应该是:

function customcb( o ) {
    console.log( o );
}