2012-04-17 71 views
0

所以我有一個運行在HTML5畫布上的小程序,我在我的js中有一個小的http get request函數。這個函數本身的工作原理(在互聯網上測試過很多例子,它的工作原理),但是當請求發送給它時,我自己的web服務器不會返回正確的東西。HTTP請求通信js到PHP不返回結果?

我的PHP是這樣的:

<?php echo VVV::getUser()->userID ?> 

當我在瀏覽器中打開它,它返回我的正確值的getUser() - >用戶ID的回報。然而,當我從我的js發送一個Http請求時,它會得到一個空的結果,但它在因特網上的各種測試頁面上使用時會起作用,所以它必須是我的PHP或我的服務器導致此問題。有任何想法嗎?

+0

瀏覽器中的調試控制檯顯示什麼? – Yaniro 2012-04-17 11:15:37

+0

也許我有一箇舊的瀏覽器,但我的瀏覽器沒有自己的調試控制檯。 – Wingblade 2012-04-17 11:16:50

+0

你使用什麼瀏覽器?這可能是一個跨域問題嗎?你怎麼在JavaScript中做請求?你能分享更多的代碼嗎? – Yaniro 2012-04-17 11:21:36

回答

0

這聽起來像是一個跨域AJAX請求問題。爲了解決這個問題,你真的只有兩個選擇:

  • 有PHP做跨域請求。因此,無論使用您的AJAX的網站都會向其自己的服務器(如其自己的ajax.php腳本)發出請求,然後向您的服務器發出請求,然後將其返回給客戶端。

  • 嘗試使用類似easyXDM的JavaScript庫來處理跨域AJAX請求,看看是否有幫助。

+0

第一個如何工作?你的意思是我想在我的服務器上有一個ajax.php,然後我的js請求並且ajax.php請求另一個php文件,並將其結果發回給我的js? – Wingblade 2012-04-17 11:38:57

0

下面是一個簡單的跨域請求(JSONP風格)一個小例子:

1)在你的服務器端,改變回應是這樣的:

<?php echo('callbackFunc(' . VVV::getUser()->userID . ');') ?> 

2 )在客戶端做這樣的事情:

function callbackFunc(userId) 
{ 
    // Do something with the userId 
} 

// Create a script tag which will load the call to the callback function 
// with the user ID generated by the PHP code. 

var s = document.createElement("SCRIPT"); 
s.src = "http://yourserver/yourpath/yourscript.php?maybesome=params"; 
document.body.appendChild(s); 

的代碼從您的服務器加載將調用callbackFunc()w ith用戶標識。