【问题标题】:xmlhttp.open does not seem to do anything in MVC structurexmlhttp.open 在 MVC 结构中似乎没有做任何事情
【发布时间】:2016-09-22 17:04:23
【问题描述】:

我正在尝试向文本字段添加自动完成功能。 这曾经可以工作,但后来我切换到 MVC 结构,现在我无法让它恢复工作。

PHP/HTML:

echo '<br><br>Add member:<br>'
    . '<form method="post"><input type="text" name="username" oninput="findUsers(this.value)" list="livesearch">'
    . '<datalist id="livesearch"></datalist>'
    . '<input type="submit" value="Add">'
    . '</form>';

JavaScript:

<script>
function findUsers(str) {
    if (str == "") {
        document.getElementById("livesearch").innerHTML = "no suggestions";
        xmlhttp.send();
    } else {
        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("livesearch").innerHTML = xmlhttp.responseText;
                }
        };
        xmlhttp.open("GET","/user/search/?q="+str,true);
        xmlhttp.send();
    }
}
</script>

/user/search 在 UserController.php 文件中的 User 类中打开一个名为 search 的函数

class UserController extends Controller
{
public function search()
    {
        $response = "hello";
        echo $response;
    }
}

所以这应该将“hello”消息放入 livesearch 数据列表中。 但由于某种原因,什么都没有发生。 如果我用 window.open 替换 xmlhttp.open,页面会正常加载并显示 hello 消息。但这显然不是我想要的。


找出确切的问题:

我的 xmlhttp.responseText 也返回了我的网站的标题,该标题已经加载到 MVC 结构中。

我将如何解决这个问题? 是否可以选择仅编辑字符串并获取 javascript 中的最后一部分? 还是有更好的解决方案?

【问题讨论】:

  • “不起作用”是什么意思?您是否遇到错误,或者您没有看到预期的结果?如果是后者,则可能是您的 xmlhttp.onreadystatechange 监听器有问题,这是什么样的?
  • 它没有显示预期的结果
  • @hairraisin 更新了我的帖子
  • 那么函数会被调用吗?状态不是 200 吗?
  • 当我在状态检查中添加 else 时,我得到 3 个回复:0、200、200

标签: javascript php ajax model-view-controller


【解决方案1】:

使用 JavaScript 抓取字符串的最后一部分(所以没有标题) 它做了它现在应该做的事情,但感觉像是一个非常“肮脏”的解决方案。

还必须添加&lt;option value=""&gt; 标签,它在我的代码中,但不在我的测试代码中。

【讨论】:

    猜你喜欢
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2019-11-26
    • 2019-12-08
    • 2020-12-21
    • 2023-04-06
    相关资源
    最近更新 更多