2011-12-15 98 views
2

我有這個PHP:你如何使用PHP和和jQuery獲取jsonp?

$response = 'success'; 
$response = json_encode($response); 
echo $_GET['callback'] . '('.$response.')'; 

與這個jQuery:

$.ajax({url: "/*url*/?invite="+getinvite+"&api="+api, dataType:"jsonp", 
    success: function(response){/*do stuff*/}}); 

在XAMPP我的筆記本電腦它是偉大的工作。然後當我把它放在我的服務器上,它給了我這個錯誤:Undefined index: callback。爲什麼不讓我設置$_GET['callback']?以及如何解決這個問題?

回答

3

您沒有設置一個名爲'callback'的參數,因此它沒有在$ _GET變量中設置。

你可以做修復的錯誤信息:

$callback = ""; 
if(array_key_exists('callback', $_GET) == TRUE){ 
    $callback = $_GET['callback']; 
} 

不過,我不認爲你可能誤解jQuery中的阿賈克斯打電話給我們 - JavaScript函數被調用成功不會傳遞到服務器;它只在jQuery中保存。

1

爲了簡化您的ajax調用, 使用專爲JSONP響應設計的getJson方法。

http://api.jquery.com/jQuery.getJSON/

這將自動創建一個將作爲參數傳遞給你JSONP API的回調函數的名稱。 示例來自頁面:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", 
    { 
    tags: "cat", 
    tagmode: "any", 
    format: "json" 
    }, 
    function(data) { 
    $.each(data.items, function(i,item){ 
     $("<img/>").attr("src", item.media.m).appendTo("#images"); 
     if (i == 3) return false; 
    }); 
    });