发出请求对象(AJAX)后如何从服务器获取响应

时间:2011-07-03 11:04:53

标签: php ajax

我正在研究AJAX,它是关于表单验证的,只要用户填写注册用户名,就可以使用AJAX进行检查,同时他仍然可以进入所有其他字段。所以我发出了一个请求,在readystatechange上我调用了一个回调函数。现在我在此之前已经学习过PHP,但我从未遇到过从服务器返回的信息。我的意思是说我的PHP脚本中包含的内容,以及如何确保发出的请求按需要响应。我不想要确切的代码,只要它的位数,或者算法可以改进,

例如,我知道我将用户名和url一起传递给php脚本,然后我检查它是否与我的数据库中的任何现有用户名匹配(MYSQL和查询),通常我只打印表单再次,如果有匹配,否则我将退出(); 但是当我想回复对象请求时我该怎么办?

2 个答案:

答案 0 :(得分:0)

这可能不是你的意思,但你不能:

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        // do something with "xmlhttp.responseText"
        var x = xmlhttp.responseText
}

在php中只是:

echo $x;

适用于传输字符串和其他信息......

答案 1 :(得分:0)

当你掌握它时,它真的很容易。如果你使用jQuery的AJAX,http://api.jquery.com/jQuery.ajax/会更容易 - 尽管不打算用你的网站膨胀,除非你打算使用大量的javascript(并使用google's cdn

在javascript中,您可以对PHP脚本进行GET或POST的XHR请求。通常你需要为任何AJAX请求的视图创建一个单独的文件,因为AJAX请求也不应该返回网页的模板(即如果你想返回'1',它应该只返回'1',不是<html><body>1</body></html>. ......等等。

示例:

blah.com/index.php需要一些AJAX请求 blah.com有javascript通过发送数据字符串/ url创建ajax请求(例如ajax.php?act = verify_email&amp; email = a @ c
然后,blah.com/ajax.php会有一些PHP代码可以用'verify_email'的'case'语句切换($ _ GET ['act']或$ _POST ['act'])。该代码将运行一些正则表达式或其他东西,并返回1或0表示1(有效),0(无效)。 'onreadystatechange'保存请求的状态,所以我认为它通常是一个函数,即:。

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  } 

您可以通过xmlhttp.responseText访问返回的“0”或“1”,其中xmlhttp为var xmlhttp =new XMLHttpRequest();

然后您只需运行请求

xmlhttp.open("GET","ajax.php?act=verify_email&email="+document.getElementById('email').value,true);
xmlhttp.send();

更新:在你的情况下使用表单onblur(当它们移出一个元素的焦点时),你可以运行发送输入值的AJAX请求,然后在ajax.php脚本中作为GET或POST请求,您可以运行验证查询以检查用户是否已存在,或者用户名是否无效或等等。请求完成后,它将在responseText值中返回结果。如果可以的话,使用firebug的控制台检查AJAX请求的结果,它非常有用。