如何捕获AJAX响应?

时间:2013-09-26 18:55:49

标签: ajax

我有一个简单的脚本,在ajax中,我想捕获返回并根据值处理它:

if (xmlhttp.readyState==4) {

    if (xmlhttp.responseText == "not available") {
        document.write("not available");
    }

}

与此同时,我尝试了这个,它起作用了:

if (xmlhttp.readyState==4) {

    document.write(xmlhttp.responseText);

}

我做错了什么?


感谢您的回复。这是我当前的域可用性检查脚本,效果很好:

    <html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $('#dtype').change(function() {
                    var opt = $('#domain').val();
                    $.ajax({
                        type: "POST",
                        url: "testwhois.php",
                        data: 'd=' + opt,
                        success:function(data){
                            $('#txtHint'). html(data);
                        }
                    });
                });
            });
        </script>
    </head>
<body>
 <form>  Domain name : <input type="text" name="domain" id="domain"> <input type="radio" name="dtype" id="dtype" value="new">New <input type="radio" name="dtype" value="transfer">Transfer  <span id="txtHint"></span> </form>
</body>
</html>

但是,我想要有两件事:

  1. 一个预加载器图像(我有它),而脚本在“txtHint”的位置工作,将显示答案。

  2. 答案以“不可用”或“可用”的格式返回。我想将'domain'字段留空,当答案以html代码返回为“不可用”时。

  3. 再次感谢。

1 个答案:

答案 0 :(得分:2)

如果您已经知道,请原谅我,但如果您不知道:

Ajax将数据发布到外部php文件,该文件处理收到的数据并发回答案。它看起来像这样:

文件#1:

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $('#Sel').change(function() {
                    var opt = $(this).val();
                    var someelse = 'Hello';
                    var more_stuff = 'Goodbye';
                    $.ajax({
                        type: "POST",
                        url: "receiving_file.php",
                        data: 'selected_opt=' + opt + '&something_else=' +someelse+'&more_stuff='+more_stuff,
                        success:function(data){
                            alert('This was sent back: ' + data);
                        }
                    });
                });
            });
        </script>
    </head>
<body>

<select id = "Sel">
    <option value ="Song1">default value</option>
    <option value ="Song2">Break on through</option>
    <option value ="Song3">Time</option>
    <option value ="Song4">Money</option>
    <option value="Song5">Saucerful of Secrets</option>
</select>

文件#2:receiving_file.php

<?php
    $recd = $_POST['selected_opt'];
    echo 'You chose: ' . $recd;

以上示例有效。如果将其复制/粘贴到两个文件中,您将看到AJAX正在运行。当然,服务器端脚本是用PHP编写的,所以你的服务器需要处理它。如有必要,请下载XAMPP并将其安装在本地计算机上。将这两个文件放在htdocs文件夹中,然后在浏览器地址栏中键入:

http://localhost/whatever_you_called_the_first_page.php

正如您所看到的,使用jQuery编写AJAX代码要简单得多。所需要的只是jQuery库(通常在头文件标签中,如上面的代码示例中所示)和AJAX代码块。

以下是其他一些要研究的例子:

More complicated example

Populate dropdown 2 based on selection in dropdown 1