javascript - 类似 Google 自动建议脚本中的 xmlHttpRequest 问题

标签 javascript ajax xmlhttprequest

我正在尝试建立一个类似于 Google Suggestion(或 Autosuggestion?)的自动建议搜索字段。

我使用纯javaScript/AJAX和2个文件:index.php和ajax-submit.php(是我实际查询数据库的文件)。但目前我只是回显文本以进行调试。

有几个问题:

问题 1: 问题是 firebug 输出:当我在搜索输入中键入某些内容时,xmlhttp 并未定义 [已解决,请参见下文]。

问题2:我还想回显搜索输入的内容,如下所示:

echo $_GET['search_text']; 

if(isset($_GET['search_text'])) {
    echo $search_text = $_GET['search_text'];
}

但我收到以下错误:* undefined index :ajax-submit.php中的search_text*

这是我的函数建议调用:

<form action="" name="search" id="search">
        <input type="text" name="search_text" id="search_text" onkeydown="suggest();" />
</form>
<div id="results" style="background:yellow"></div>

这是我的函数 suggest():

<script type="text/javascript">
    //function does not needs params because is unique to the input search_text
    function suggest() {
    //browser object check
    if(window.xmlHttpRequest) {
    xmlhttp = new xmlHttpRequest();
    }
    else if (window.ActiveXObject) {
    //console.log("error");
    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }
    //when the onreadystatechange event occurs
    xmlhttp.onreadystatechange = function() {

        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

        document.getElementByID('results').innerHTML = xmlhttp.responseText;
        }

    }//end onready

    xmlhttp.open('GET', 'ajax-submit.php', true);
    xmlhttp.send();

    }//end suggest

</script>

这是我的 php ajax-submit 文件:

<?php
echo 'Something';
?>

有人可以帮我调试吗?这可能是一个范围问题,但我不知道。

第二个问题是您通常如何在 Firebug 中调试 Ajax 请求?

谢谢

最佳答案

其实是这样的

XMLHttpRequest()

不是

xmlHttpRequest()
<小时/>

要创建真正的跨浏览器兼容的 XHR 对象,请执行以下操作:

var _msxml_progid = [
    'Microsoft.XMLHTTP', 
    'MSXML2.XMLHTTP.3.0',
    'MSXML3.XMLHTTP',
    'MSXML2.XMLHTTP.6.0'
];

var xhr = ( function() {
    var req;
    try {
        req = new XMLHttpRequest();
    } catch( e ) {
        var len = _msxml_progid.length;
        while( len-- ) {
            try {
                req = new ActiveXObject(_msxml_progid[len]);
                break;
            } catch(e2) { }
        }
    } finally {
        return req;
    }
}());

关于javascript - 类似 Google 自动建议脚本中的 xmlHttpRequest 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7661018/

相关文章:

node.js - 如何在 NodeJS (Express js) 中检测中止的 ajax 请求

javascript - 简单 XMLHttpRequest 失败,Access-Control-Allow-Origin header 为 null

javascript - 强制 iOS iPhone youtube 嵌入播放器退出全屏

javascript - 如何确保文本/链接的 CSS 不透明度更改不会更改 Firefox/Windows 中的颜色值?

javascript - 单击链接后停止导航

javascript - AJAX jQuery load() 之后运行 jQuery 代码

php - 使用 jQuery 在 mySQL 库中存储基本文本字符串?

mysql - Nodejs/Express 从 Web 客户端保存选择的头像并直接保存到 MySQL 数据库

php - Ajax 片段元标记 - Googlebot 未读取页面内容

http - 为什么 Comet 需要 multipart/x-mixed-replace?