AJAX使用两个PHP变量更新Mysql表

时间:2011-06-26 05:56:52

标签: php mysql ajax

我正在尝试使用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 个答案:

答案 0 :(得分: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')。
  4. 关于javascript的一些不相关的说明已经发布了。

    1. 你没有在行尾使用半冒号,我强烈建议你使用它们。我记得几年前我开始编程是多么乏味,但几周之后就变得很容易了,几年之后你甚至会用分号结束你妈妈生日那天的贺卡。如果没有分号,一些(愚蠢的)javascript解析器将会失败,并且您的代码将更难以最小化。
    2. 您将XMLHttpRequest保存在一个函数的全局变量中,然后在另一个函数中使用它。虽然这不会对此特定代码段造成很大风险,但请考虑添加另外几个callAjax函数来调用其他PHP页面,所有这些都共享该全局变量。如果用户在第一个链接完成其调用之前单击第二个链接,则完成后第一个链接将使用第二个链接的XMLHttpRequest,第二个链接也将使用第二个链接,导致页面上出现重复和错误的HTML部分。
    3. 在GetXmlHttpObject中,您声明了一个名为xmlHttp的变量,该变量与全局变量的名称相同。虽然Javascript会正确地将第二个变量识别为在函数中使用而不是全局变量,但使用相同的名称会使您的代码更难以理解,并且代码必须是人类可读的而不是机器才能读取代码。