2013-04-12 55 views
0

嘗試此鏈接:http://humberinteractive.com/2013/api/index.php?fname=keoJquery.ajax()拋出錯誤

你可以看到,它以$ _GET [「FNAME」],並打印出我需要的內容。

我想:

$.ajax({ 
    type: 'GET', 
    url: 'http://humberinteractive.com/2013/api/index.php?fname=keo', 
    success: function(data) { 
     alert(data); 
    } 
}); 

但它不工作...

的jsfiddle:http://jsfiddle.net/3V8VP/

幫助幫助

+0

您以無用格式返回數據。你應該返回json或xml。 –

+0

什麼不起作用? –

+3

[相同來源政策](http://en.wikipedia.org/wiki/Same_origin_policy)? – Musa

回答

0

在你的小提琴,它失敗,因爲跨域不允許原始ajax請求。常用的解決方法是使用JSONP代替。如果您的最終應用在同一個域上,這不會成爲問題。 JSONP代碼如下所示:

<?php 

    $data = array("some" => "data"); // make this part yourself 
    $callback_name = $_REQUEST["callback"]; 

    echo $callback_name . "(" . encode_json($data) . ")"; 

?> 

接下來,數據格式不可用。要將數據從PHP傳遞到Javascript,您應該使用JSON。用PHP,函數變換的陣列/對象到JSON格式是json_encode

最後,請確保在回答JSON對象時發送正確的MIME類型。 (PHP函數header()用正確的參數應該做的)

+0

http://jsfiddle.net/3V8VP/1/你可以看看並告訴我爲什麼它給我錯誤嗎? –

+0

嘿,你返回的數據格式化爲JSON格式;雖然這不是JSONP - 谷歌它得到一些例子(和我編輯我的答案與JSONP例子)。此外,請注意,如果您在'http:// humberinteractive.com'某個頁面上的某個頁面上運行JavaScript代碼,則該代碼將起作用。當網站上託管的頁面通過AJAX呼叫另一個站點時,跨域來源只是一個問題(谷歌它也可以獲取更多信息) –

0

如果你這樣做在不同的領域,這可能會阻止作爲同源策略。

那麼你可以嘗試使用JSONP這樣做。

通過這種方式,指定dataType: "jsonp"爲AJAX方法的參數,然後jQuery將創建您的成功方法的別名爲xxxxxxxx和AJAX請求將與參數callback=xxxxxxxxxx發送。

在服務器端,你需要捕捉回調名稱,並輸出相同的JSON數據,現在你有回調的名稱,如xxxxxxxxx({....})

最後你的客戶端將直接運行這個這個輸出。

例如:

JS:

$.ajax({ 
    type: 'GET', 
    dataType: 'jsonp', 
    url: 'http://humberinteractive.com/2013/api/index.php?fname=keo', 
    success: function(data) { 
     alert(data); 
    } 
}); 

服務器端,例如PHP:

<?php 
    // some logic ...... 
    $json_string = encode_json($data_you_wanna_output); 
    echo $_GET['callback'] ."(". $json_string .")"; 
?> 
+0

您能舉一個例子嗎? –

+0

我已經上傳了我的回答:) –

0

試試這個:

$.ajax({type: "POST", 
     url: 'http://humberinteractive.com/2013/api/index.php', 
     data: {'fname': 'keo'} 
    }).done(function(data) {alert(data);});