2011-06-26 19 views
0

我試圖用AJAX更新一個MySQL表與PHP變量。AJAX更新兩個PHP變量的Mysql表

這裏是我的回聲變量的PHP代碼:

<input type='button' name='button' class='bluebutton' value='Overnight Stay' onclick='callAjax($id1&$newName);' /> 

這裏是我的jQuery:

var xmlHttp 

function callAjax(id) { 

if (id.length==0) { 
document.getElementById("txtHint").innerHTML="" 
return 
} 
xmlHttp=GetXmlHttpObject() 
if (xmlHttp==null) { 
alert ("Browser does not support HTTP Request") 
return 
} 
var url="gethint.php" 
url=url+"?id="+id 
url=url+"&name="+name 

xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true) 
xmlHttp.send(null) 
} 


function stateChanged(){ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") 
{ 
    document.getElementById("txtHint").innerHTML=xmlHttp.responseText 
} 
} 

function GetXmlHttpObject() { 
var xmlHttp=null; 
try { 
    // Firefox, Opera 8.0+, Safari 
    xmlHttp=new XMLHttpRequest(); 
} 
catch (e) { 
    // Internet Explorer 
     try { 
     xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
     catch (e) { 
     xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
} 
return xmlHttp; 
} 

這裏是gethint.php。現在我只是迴應變量。

$id = $_REQUEST['id']; 
    $name = $_REQUEST['name']; 
    echo $id; 
    echo $name; 

,當我把它放在一起,我在其中規定控制檯得到一個對象預期的錯誤:

Message: Expected ')' 
Line: 3 
Char: 21 
Code: 0 
URI: ../scripts/clienthint.js 

此錯誤對應於行「function callAjax(id)」 我被困在愚蠢的我應該怎麼稱呼這一個。 我會很感激任何人都在關心的反饋,無論多麼重要。 再次感謝, --Matt

+1

單獨的函數調用她與2個參數callAjax($ id1,$ newName) –

回答

0

我沒有明確的答案,因爲我認爲(請參閱第1點)錯誤消息是誤導性的。

  1. 我想你粘貼的錯誤是來自IE。在最近的IE版本中,我沒有更新過,但是歷史上IE在正確的位置給了你正確的錯誤的聲譽很差。請嘗試使用帶有Firebug的Firefox,或Chrome/Safari及其調試擴展。報告錯誤時,他們通常更友好。
  2. 在callAjax中你使用的是「name」,它在哪裏定義?它來自哪裏?也許,正如Haim Evgi所說,你應該讓callAjax帶兩個參數,callAjax(id,name),然後用兩個參數調用它。
  3. id(並最終名稱)字符串?在這種情況下,您應該通過將它們放在單引號或雙引號之間來告訴javascript它們是字符串,如callAjax('$ id1','$ newName')。

一些關於javascript剪貼的無關注釋貼出來了。

  1. 你不要在行尾使用分號,我強烈建議你使用它們。我記得多年前我開始編程時的繁瑣程度,但幾個星期後就變得簡單了,幾年之後,甚至可以爲您的媽媽生日賀卡分號結束。如果沒有分號,一些(愚蠢的)JavaScript解析器將會失敗,並且您的代碼將會更難以最小化。
  2. 您將XMLHttpRequest保存在一個函數內的全局變量中,然後在另一個函數中使用它。雖然這不會對此特定片段造成很大風險,但認爲您正在添加另一對callAjax函數來調用其他PHP頁面,所有PHP頁面都共享該全局變量。如果用戶在第一個鏈接完成之前點擊第二個鏈接,完成後第一個鏈接將使用第二個鏈接的XMLHttpRequest,第二個鏈接也會導致頁面上出現重複和錯誤的HTML部分。
  3. 在GetXmlHttpObject中,您正在聲明一個名爲xmlHttp的變量,它與全局變量的名稱相同。儘管Javascript會正確地將第二個變量標識爲在函數中使用的變量,而不是全局變量,但使用相同的名稱會使得代碼難以理解,而且代碼必須能夠被人類讀取,而不是機器才能變得更好碼。