2012-07-16 186 views
2

我试图使用$ .ajax()调用外部域,它工作时,服务器接收到调用,但在firebug错误中的响应出现在jquery.js行7760.我'我一整天都在打我的脑袋,并不觉得自己已经做得更好了。jQuery的Ajax跨域请求

$.ajax({ 
      type: "GET", 
      url: "http://admin:[email protected]:81/stream.jpg", 
      //data: {}, 
      //async: true, 
      //contentType: "application/jsonp; charset=utf-8", 
      //headers: { 
      // 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5', 
      // 'Accept': '*/*', 
      // 'Authorization': 'Basic ' + auth 
      //}, 
      //timeout: 500, 
      dataType: "jsonp", 
      //crossDomain: true, 
      beforeSend: function (req) { 
       req.setRequestHeader('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5'); 
       req.setRequestHeader('Accept', '*/*'); 
       req.setRequestHeader('Authorization', 'Basic ' + auth); 
      }, 
      success: function (data) { 
       alert("Success"); 
      } 
     }); 
+0

'jsonp'不支持'success' – diEcho 2012-07-16 06:48:26

+0

指http://stackoverflow.com/a/10827375/946170 – Imdad 2012-07-16 06:50:53

+0

@diEcho,可以请你发送一个链接来回复您的信息 – Imdad 2012-07-16 06:56:49

回答

0

jsonp响应必须包装在javascript方法调用中。 (回调方法)。

假设响应是图像。 jquery能够处理它看起来不太可能。

0

我不知道你是否可以使用ajax调用来调用图像。

当您使用jsonp时,beforeSend在ajax调用被忽略。

也许你必须让你的服务器知道和响应CORS。

事情是这样的:

protected override void OnStartProcessingRequest(ProcessRequestArgs args) 
    { 
     HttpContext context = HttpContext.Current; // set cache policy to this page 

     context.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
     if (context.Request.HttpMethod == "OPTIONS") 
     { 
      context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); 
      context.Response.AddHeader("Access-Control-Allow-Headers", "X-Requested-With, Accept"); 
      context.Response.AddHeader("Access-Control-Max-Age", "3628800"); 
      context.Response.AddHeader("type", "application/json; charset=utf-8"); 
      context.Response.End(); 
     } 
    } 

,并使用XDomainRequest和XMLHttpResquest使在客户端调用。

到这里看看:http://andre-pedroso.blogspot.pt/2011/02/javascript-consume-service-with-cross.html

干杯