将PHP数组传递给Ajax/jQuery

4

大家好,我知道这个话题已经有一些结果了,但我现在还不打算做什么高级的东西,只是想了解一些基础知识。出于某种原因,这段代码中警报可以正常工作并打印出正确的数组信息,但我似乎无法让它为自动完成工作?https://jqueryui.com/autocomplete/

var oReq = new XMLHttpRequest(); //New request object
oReq.onload = function() {
    var res = oReq.responseText;
    AC(res);
};
oReq.open("get", "get-data.php", false);
oReq.send();

function AC(res){
$(function() {
    alert(res);
    $( "#tags" ).autocomplete({
      source: res
    });
});
}

那么在函数AC()中,alert(res)有效,但仍未填充源?

我的get-data.php文件如下:

<?php $arr = array("ActionScript",
      "AppleScript",
      "Asp");

echo json_encode($arr); ?>

我很感激您能提供任何帮助和指引,即使我需要去查找更多相关资料。
1个回答

3

在JavaScript中进行JSON.unserialize。

source: JSON.parse(res);

这是由于未解码JSON导致的。 JSON以字符串形式到达,因此alert()可以正确地呈现接收到的数据,但是当您发布到源时,必须发布对象——需要将字符串解码为对象。 ;) 最终代码:
var oReq = new XMLHttpRequest(); //New request object
oReq.onload = function() {
    var res = oReq.responseText;
    AC(res);
};
oReq.open("get", "get-data.php", false);
oReq.send();

function AC(res){
$(function() {
    alert(res);
    $( "#tags" ).autocomplete({
      source: JSON.parse(res)
    });
});
}

HTH


嗨,瓦伦丁,感谢您的快速回复。我尝试了您建议的代码行,认为它们都很有道理,但对我仍然没有用 :( 您还能想到其他什么吗? - Michael Zerofive Jenkins
在下面发布不同的问题案例代码;) - Valentin Rusk
1
嗨,瓦伦丁,我用JSON.parse让它工作了,虽然谢谢你的逻辑帮助 :) - Michael Zerofive Jenkins
抱歉,我的错 :( JSON.parse()。不管怎样,逻辑是正确的 ^_^ - Valentin Rusk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接