繁体   English   中英

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

[英]How do i get the response back from server after issuing a request object(AJAX)

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

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

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

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

在 php 中:

echo $x;

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

当你掌握它的窍门时,这真的很容易。 It's even easier if you use jQuery's AJAX, http://api.jquery.com/jQuery.ajax/ - though don't bloat your site with this unless you intend on using loads of javascript (and use google's cdn for it)

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

例子:

blah.com/index.php 需要一些 AJAX 请求。
blah.com has javascript that creates the ajax request by sending a datastring/url (eg ajax.php?act=verify_email&email=a@c
blah.com/ajax.php 将有一些 PHP 代码可以切换($_GET['act'] 或 $_POST['act'])与 'verify_email' 的 'case' 语句。 该代码将运行一些正则表达式或其他东西,并返回 1 或 0 表示 1(有效)、0(无效)。 'onreadystatechange' 保存请求的状态,所以我认为它通常是 function 即:

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.ZE1BFD762321E409CEE4AC0B6E 脚本中运行 CEE4AC0B6E8 或 GET19CEE4AC0B6E8你可以运行你的验证查询来检查用户是否已经存在,或者用户名是否无效等等。 一旦请求完成,它将在 responseText 值中返回结果。 如果可以的话,使用 firebug 的控制台检查 AJAX 请求的结果,它非常有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM