2012-07-16 244 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

乾杯