使用JSONP跨域ajax请求

时间:2013-03-18 19:56:46

标签: jquery cross-domain jsonp

我需要从其他域获取我的应用程序的数据。我想使用jsonp,但每次我有错误'80020101'

这是我在'其他域'的代码(ASP.NET MVC 4)

 public ActionResult Test()
 {
    return Json(new { foo = "bar", baz = "Blech" }, JsonRequestBehavior.AllowGet);
 }
 public string Test2()
 {
    return "aaa";
 }

这是我发送请求的ajax方法

$.ajax({
   url: 'https://192.168.0.61/CryptoProTestTool/Home/Test2/',
   type: 'GET',
   dataType: 'jsonp',
   error: function(xhr, status, error) {
      alert("error"); 
   },
   success: function(json) {
      alert("success");
   }
   });

怎么了?为什么我在这个简单的例子中总是有错误?我对Test和Test2数据有疑问......

手动测试显示服务发送数据 enter image description here

编辑1:我收到错误消息“无法完成操作。错误80020101.”在ajax请求的错误功能。 我试着像这样改变Test2

public ActionResult Test2()
{
  return Content("<script language='javascript' type='text/javascript'>alert('Hello world!');</script>"); 
}

但是有同样的问题

EDIT2: 你好,我们又见面了! 我被告知工作解决方案,但在我运行后问题出现。

 public ActionResult Test2()
 {
    return Content("MyMethod('test12345');"); 
 }

和Javascript代码:

function onPageLoad() {
   CheckCryptoProAvailable();
}

function CheckCryptoProAvailable() {

  $.ajax({
     url: 'https://192.168.0.61/CryptoProTestTool/Home/Test2/',
     type: 'GET',
     dataType: "jsonp",
     error: function(xhr, status, error) {
        alert("error = " + error.toString()); 
     },
     success: function(json) {

     }
  });

}

function MyMethod(testValue){
 alert(testValue);

}

一切正常,MyMethod在请求后被调用。但之后我从ajax请求错误处理程序中看到一个窗口。又怎么了?

enter image description here

1 个答案:

答案 0 :(得分:1)

你在哪里得到这个错误? “aaa”不是有效的javascript。要使用jsonp,你应该返回类似

的内容
callbackFunc("aaa");