2011-06-11 276 views
0

我在我的主域上有我的JavaScript文件,我想從子域進行一些調用。AJAX跨域請求

我已經加入:

url: "http://domain.com/ajax.php" 

所以完整的代碼:

$.ajax({ 
     type: "POST", 
     url: "http://domain.com/ajax.php", 
     data: { 
      var1: var1, 
      var2: var2 
     }, 
     success: function(data){ 

     } 
    }); 

但在螢火蟲它顯示了請求作爲紅色並沒有作出迴應。 POST參數也應該在那裏。

我應該在子域上創建一個新的JS文件並添加必要的代碼並從那裏執行AJAX調用?

編輯:使用JSONP代碼

我用這對localhost/ajax.php,這是我從sub.localhost

$.ajax({ 
     dataType: 'jsonp', 
     data: 'id=10', 
     jsonp: 'jsonp_callback', 
     url: 'http://localhost/ajax.php', 
     success: function (data) { 
      console.log(data); 
     }, 
    }); 

調用和ajax.php包含:

<?php 
echo $_GET["id"]; 
?> 
+0

這2個域是什麼?你的服務器出錯了嗎? – hvgotcodes 2011-06-11 15:54:36

+0

目前我正在測試localhost,沒有錯誤,只是沒有返回任何東西。 – fxuser 2011-06-11 15:55:57

+0

嘗試在實際域上進行測試。 localhost到域更有問題,雖然看到下面的可能的解決方案。 – glortho 2011-06-11 16:04:33

回答

2

假設你有jQuery 1.5+可以使用:

$.ajax({ 

    crossDomain:true, 
    type: "POST", 
    url: "http://domain.com/ajax.php", 
    data: { 
     var1: var1, 
     var2: var2 
    }, 
    success: function(data){ 

    } 

}); 

從DOCS:

跨域(加入1.5)

Default: false for same-domain requests, true for cross-domain requests

如果要強制跨域請求(如JSONP)在相同的域,設定跨域的值爲真。這允許,例如,服務器端重定向到另一個域名

+0

仍然是相同的問題 – fxuser 2011-06-11 16:19:50

0

子站點要求你有兩種選擇:

  1. 兩側使用document.domain

  2. 使用jsonP,通過jQuery 1.5的跨域ajax規範或directly

+0

與jsonp它甚至沒有執行在子域 – fxuser 2011-06-11 16:21:04

+0

上發送你的jsonp代碼(在調用者和被調用方)上的ajax請求,我會看看。 – glortho 2011-06-11 16:30:03

+0

看到主帖.. – fxuser 2011-06-11 16:47:42