2010-06-21 80 views
1

我正在嘗試在jQuery中使用AJAX函數在論壇上創建一個簡單的評論回覆。代碼如下:如何在jQuery中調用ajax時訪問我的PHP變量?

$.ajax({type:"POST", url:"./pages/submit.php", data:"comment="+ textarea +"& thread="+ currentId, cache:false, timeout:10000, 
     success: function(msg) { 
       // Request has been successfully submitted 
       alert("Success " + msg); 
     }, 
     error: function(msg) { 
       // An error occurred, do something about it 
       alert("Failed " + msg); 
     }, 
     complete: function() { 
       // We're all done so do any cleaning up - turn off spinner animation etc. 
       // alert("Complete"); 
     } 
    }); 

裏面的submit.php文件,我有這個簡單的如果 - >然後:

if(System::$LoggedIn == true) 
{ 
    echo "Yes"; 
} else { 
    echo "No"; 
} 

此調用工作在我的網站上使用的所有其他網頁,但我不能通過AJAX函數訪問我的任何變量。我測試過的一切不止一次,我可以回顯什麼,但只要我嘗試訪問我的其他PHP變量或函數我剛剛得到這個錯誤:

Failed [object XMLHttpRequest]

爲什麼我無法訪問我的其他功能/變量?例如,我必須使用已創建的$ mySQL變量將數據發送到submit.php中的數據庫中。除了當我使用AJAX函數調用它時,這些函數/變量可以在任何地方再次訪問。經過幾個小時的谷歌搜索,我只是花了。任何人都可以爲我闡明這一點嗎?非常感謝。

+0

如果您希望我們幫助您解決此問題,則必須提供更多詳細信息。如果您無法更好地描述系統,請嘗試給我們整個源代碼? – Zarel 2010-06-21 06:19:06

+0

系統只是一個處理用戶數據的類。這可能是一個不好的例子。我有一個有變量的配置文件,例如:$ variable =「test」;而且我甚至無法訪問submit.php內部的這個變量在整個項目中是全局的。 Submit.php似乎有它自己的範圍。 – mrtwidget 2010-06-21 06:23:00

+4

您應該跳過AJAX並通過在瀏覽器中輸入URL直接請求頁面。然後,您可以在問題與問題之間減少一層調試問題。 – Fenton 2010-06-21 06:58:52

回答

0

首先,您在URL的數據參數字符串中有一個空格 - 將導致問題。其次,你的successerror函數引用變量msg。看來你期待這個變量是字符串。那麼,問題就變成了 - 你的PHP腳本在submit.php產生的輸出格式是什麼?

對jQuery API的快速閱讀表明,如果響應的格式只是文本,則應該可以使用響應的.responseText屬性訪問內容。這也是內聯與響應你說你得到了各國「失敗[XmlHttpRequest對象]」(當你試圖在警報使用時把一個XHR爲一個字符串

試試這個:

$.ajax({ 
    type: "POST" , 
    url: "./pages/submit.php" , 
    data: "comment="+ textarea +"&thread="+ currentId , 
    cache: false , 
    timeout: 10000 , 
    success: function(msg) { 
    // Request has been successfully submitted 
    alert("Success " + msg.responseText); 
    } , 
    error: function(msg) { 
    // An error occurred, do something about it 
    alert("Failed " + msg.responseText); 
    } , 
    complete: function() { 
    // We're all done so do any cleaning up - turn off spinner animation etc. 
    // alert("Complete"); 
    } 
}); 
1

,你只需要在PHP腳本返回一個變量。另外寫腳本返回JSON或如果你感覺勇敢的XML。下面是使用JSON一個簡單的例子。

在JavaScript

$.ajax({ 
    type: 'GET' 
    ,url: '../pages/my_vars.php' 
    ,dataType: 'json' 
    ,success: function(data){ 
     // or console.log(data) if you have FireBug 
     alert(data.foo); 
    } 
}); 

然後在php腳本中。

// make an array or stdClass 
$array = array(
    'foo' => 'I am a php variable' 
    ,'bar' => '... So am I' 
); 

// Encodes the array into JSON 
echo json_encode($array); 
相關問題