Javascript http请求问题

时间:2011-07-05 17:52:23

标签: javascript httpwebrequest

我想获得一个自动搜索结果,在一个页面上它可以工作但在另一个页面上却没有。你能告诉我什么问题吗?

WORKING:

function showUser(str)
{

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ordertabel.php?search="+str,true);
xmlhttp.send();
}

不工作:

function showUser(str,str)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","klanttabel.php?search="+str"&search2="+str,true);
xmlhttp.send(); 
}

请注意,使用NOT工作代码时,有2个输入。

提前致谢!

4 个答案:

答案 0 :(得分:1)

可能是因为你在函数方法中使用了两个具有相同名称的变量,而你在xmlhttp.open()方法中缺少一个PLUS符号......

尝试:

function showUser(str, str2) {
   ...code...
   xmlhttp.open("GET", "klanttabel.php?search="+str+"&search2="+str2, true);
   xmlhttp.send();
}

另一个建议是,在使用JQuery时进行Ajax调用会更容易。

$.ajax({
   type: "GET",
   url: "klanttabel.php",
   data: ({search : str,
           search2 : str2}),
   success: function(data) {
     $('#txtHint').html(data);
   }
});

答案 1 :(得分:1)

我猜这是一个网址编码问题。尝试编码:

xmlhttp.open("GET", "klanttabel.php?search=" + encodeURIComponent(str) + "&search2=" + encodeURIComponent(str), true);

另请注意,您在字符串连接中缺少+

答案 2 :(得分:0)

您的参数名称相同......更改它们。

function showUser(strA,strB)

稍后在函数中更改它们:

xmlhttp.open("GET","klanttabel.php?search=" + strA + "&search2=" + strB,true);

如果缺少+,您也会遇到错误。

答案 3 :(得分:0)

你缺少加号

xmlhttp.open("GET","klanttabel.php?search="+str"&search2="+str,true);
第一次str后

加号

xmlhttp.open("GET","klanttabel.php?search="+str+"&search2="+str,true);