2013-04-08 38 views
0

我正在使用以下腳本在不同的服務器上發送ajax call在不同服務器上的Ajax調用

$(document).ready(function() { 
var uniqcod=$(".piczhu-widget").attr('id'); 

    $.ajax({ 
     url:'File Path...', 
     type:'post', 
     data:{uniId:uniqcod}, 
     success: function(result){ 
      $('.abcClass').html(result); 
      } 
     }); 
    }); 

腳本未接收到任何響應。這個腳本在同一臺服務器上工作正常。是否有任何其他參數用於在不同服務器上發送呼叫?

+0

文件路徑......?嘗試不同的? – 2013-04-08 05:40:36

+0

這個答案是否有幫助,它是關於jQuery跨站點調用的。最糟糕的情況是,您需要編輯服務器端代碼以處理所有用例。 http://stackoverflow.com/questions/6101731/jquery-external-ajax-call-not-working-in-ie/10618712#10618712 – Whome 2013-04-08 05:51:00

回答

1

這應該使用JSONP解決這個問題:

$.ajax({ 
    url:'File Path...', 
    type:'post', 
    data:{uniId:uniqcod}, 
    dataType: 'jsonp', // use JSONP 
    success: function(result){ 
     $('.abcClass').html(result); 
     } 
    }); 
}); 
+2

請注意,JSONP的限制之一是它只適用於GET,而不是POST類型。 – 2013-04-08 05:48:06

+0

我試過這種方法。我收到了電話的回覆。但流程並未成功。含義我無法顯示我的數據。 – 2013-04-08 11:04:47

+0

Sid,您是否嘗試過在您的成功中使用console.log(result)以確保獲得正確的數據?例如,如果服務器正在發回JSON,那麼您需要告訴jQuery它應該期待一個JSON對象。 – 2013-04-08 20:15:57

0

您需要將jsonp或cors用於跨域ajax。下面給出的代碼是用於CORS

實施例的代碼的示例:

jQuery.support.cors = true; 

function CrosDom_ajax(url) { 
     if (window.XDomainRequest 
     && $.browser.msie 
     && $.browser.version < 10) { 
     xdr = new XDomainRequest(); 
     if (xdr) { 
      xdr.onload = function() { 
       alert(xdr.responseText); 

      }; 
      xdr.open("get", url); 
      xdr.send(); 
     } 
     } 
     else { 
      $.ajax({ 
       url: url, 
       success: function (response) { 


       }, 
       error: function (data) { 
       } 
      }); 
     } 
    } 

還需要寫在服務器側下面的代碼,以允許跨域訪問

Response.AppendHeader("Access-Control-Allow-Origin", "*");   
1

這是因爲跨域策略。這是一個安全的事情。我建議您將該請求發送到位於您的服務器(您的域)上的具有cURL的PHP​​文件。

但你需要安裝在服務器上捲曲:http://curl.haxx.se/ 如果您使用基於Debian的服務器,你可以做到這一點:sudo易於得到安裝PHP5捲曲

例子:

<?php 
$data = $_POST['data']; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "URL FOR REQUEST"); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                           

$result = curl_exec($ch); 

echo $result; 

?> 
相關問題