2010-06-05 50 views
2

我使用這個代碼張貼到PHP頁面:

var qreq = ".....myurl.php"; 
$.post(qreq, function(data){alert(data);}); 
在我的PHP文件

我有這樣的:

...... 
$prevtopic = $row["topic_id"]; 
echo $prevtopic; 

警報出現了,但是是空白的。由於某些原因,即使我從PHP文件回顯數據也是空的。我也嘗試只是迴應「嗨」,但也沒有奏效。我究竟做錯了什麼?

謝謝。

+3

PHP文件在同一個域上嗎? – 2010-06-05 15:18:13

+0

不,但那不應該,對吧?我在請求中使用完整的網址。 – vee 2010-06-05 15:20:49

+0

猜想我們會看到更多的代碼告訴你!首先確保你使用了正確的url,可能你可以通過在瀏覽器中輸入它來確定它的位置。要查看有關在瀏覽器和服務器之間發送的數據的更多信息,請嘗試一些類似於螢火蟲(https://addons.mozilla.org/de/firefox/addon/1843/)的內容,它可以在它的控制檯中向您顯示被叫網址,正在發佈什麼數據等...... – 2010-06-05 15:22:14

回答

2

你不能這樣跨域請求,什麼阻止你被稱爲same-origin policy,以防止惡意的跨域請求(即使你的沒有惡意,它仍然被阻止)。

對於這種情況,您可以使用JSONP,但不能獲得正常的html /文本內容。 Here's a short writeup with a better description on JSONPhere for a full example,但you need to return JSONP from PHP

至於爲什麼?這是因爲http://evil.com/在沒有進行一些檢查的情況下不能向http://mybank.com發出請求,這就是爲什麼政策存在。

+0

允許跨域GET請求:) – Anpher 2010-06-05 15:43:52

+0

php中的所有內容都通過此.post正確執行,並且東西插入到我的數據庫中。儘管政策如何實現這一點?該政策是否阻止數據從php傳輸到js? – vee 2010-06-05 15:45:41

+0

@vee - 策略允許您訪問服務器,但阻止響應,這就是爲什麼'data'是空的。 – 2010-06-05 16:00:33