2014-04-04 81 views
0

我嘗試了一些基本的例子,它不工作。我不確定我完全理解jsonp,但是我遵循了基本教程,並且在直觀的層面上,我看不到任何錯誤。 (當然,我錯過了一些東西,因此是個問題)。簡單的jsonp不能與php服務器一起工作

JavaScript代碼:

postData = $(this).serialize(); 

console.log(postData); 

$.ajax({ 

    data: postData, 
    url: 'externaldomain.php', 
    dataType: 'jsonp', 

    success: function(data){ 
     console.log(data); 
     alert('Your comment was successfully added'); 
    }, 
    error: function(){ 
     console.log(data); 
     alert('There was an error adding your comment'); 
    } 
}); 

PHP代碼:

$tag = mysql_real_escape_string($_GET["callback"]); 

惱人的是,它甚至不顯示我的錯誤,以谷歌爲。

任何人都可以幫忙解決問題嗎?

+0

試試'url:'externaldomain.php?callback =',' –

+0

不是。不工作。 – user3215569

回答

0

因爲我們還沒有發佈完整的或相關的PHP代碼,我要承擔它看起來像這樣

$tag = mysql_real_escape_string($_GET["callback"]); 
echo $tag."("; 
// print json here 
echo ")" 

我真的不知道我該怎麼jQuery的手柄JSONP請求,但什麼用來做是一個新的腳本添加到看起來像DOM這樣

<script> function cb(json) { alert(json); } </script> // (I) 
<script src="{url}?callback=cb"></script> // (II) 

當(II)被加載,因爲我們有一個回調,然後,我們包括在DOM腳本看起來像這樣

cb({ 
    // json goes here 
}) 

這幾乎就像我們正在使用的稱爲cb的函數調用。因此實現cb(在(I)中)是自然的。該實現類似於jQuery的ajax中的success(data)函數。它用於使用和操縱請求的json

但是我注意到你正在用jsonp調用ajax調用一個POST請求。不幸的是(根據這個問題How to make a jsonp POST request that specifies contentType with jQuery?)使用JSONP進行POST是不可行的,因爲實現方式。

+0

是的,除了這個聲明之外,它只是在PHP中迴應標籤。我不明白你的功能是什麼意思。你能舉個例子嗎? – user3215569

+0

當然,我會編輯這個問題來詳述更多 – george

+0

我不是在做一個帖子。變量名稱只是posData,因爲我修改了前面的示例。我試圖瞭解你如何說它應該工作..並且它沒有工作.. – user3215569

-1

你不能POST使用JSONP ......它根本不能這樣工作...... 所以你通常只能執行GET請求。您不能執行POST請求。

有關jsonp如何看待這篇不錯文章的詳細信息。 jsonp-how-does-it-work

更多clearification: 查看其它SO質疑Link1Link 2

但有變通方法是有一些限制看看這個Using PUT/POST/DELETE with JSONP and jQuery。 (對我來說沒有任何作用)

+0

這並不能解答這個問題。要批評或要求作者澄清,請在其帖子下方留言。 –

+0

@DarinKolev JSON-P通過在您的文檔中注入腳本標籤來工作:它不是傳統的XHR請求。 所以你通常只能執行GET請求。你不能執行PUT請求。 –

+0

@DarinKolev你可以看看更新的答案。 –

相關問題