2011-08-26 61 views
16
$.ajax({ 
    type : "GET", 
    dataType : "jsonp", 
    url : '/', 
    data : {} 
    success: function(obj){ 

    } 
}); 

如何使用$ .ajax dataType:jsonp跨域發佈數據?

+1

既然你沒有說明你遇到了什麼樣的錯誤,我可以指出你這個:http://api.jquery.com/jQuery.getJSON/它應該做你想做的 - 但是它再次只是一個你寫的東西的簡寫。 – m90

+0

發佈數據??你可以clairfy .. – Baz1nga

+0

請參閱文檔:http://api.jquery.com/jQuery.getJSON/你需要在你的url中指定一個回調函數。 –

回答

3

簡單的jsonp是不可能的。閱讀this

+0

謝謝〜我必須需要該文檔。 – Thinking80s

+0

@kevin編輯鏈接 – genesis

+2

不知道這是如何幫助?它不提供解決方案,只是說你不能這樣做。 – dewd

38

要回答的,而不是送你像上面另一個鏈接你的問題:

JS

$.ajax({ 
    type : "GET", 
    dataType : "jsonp", 
    url : "http://domainname.com/json.php?callback=?", // ?callback=? 
    success: function(data){ 
      // do stuff with data 
    } 
}); 

PHP可能可能是這樣的:

<?php 
include('connect.php'); 
$sql = "SELECT id, name, items FROM tablename ORDER BY id ASC"; 
$result = mysql_query($sql); 
while($row = mysql_fetch_array($result)) 
{ 
    $rows[] = array(
      "id" => $row['id'], 
      "name" => $row['name'], 
      "items" => $row['items']); 
} 
$json = json_encode($rows); 
$callback = $_GET['callback']; 
echo $callback.'('. $json . ')'; 
?> 

dataType設置爲jsonp將允許jQuery自動將另外的?callback=?添加到url的末尾以指定回調。如果您在上面指定自己的名稱,它將使用您傳遞的callback名稱。如果您需要指定json回調名稱,請使用jsonpCallback屬性。或者您可以將其添加爲數據屬性的參數。如果您需要更多信息,請訪問jQuery API Ajax:http://api.jquery.com/jQuery.ajax/

不要忘記在結果字符串上添加;

我希望這有助於!

+3

非常感謝!看了十幾個例子後,這個終於讓我的代碼工作了! – sahithya