gpt4 book ai didi

javascript - 为什么在 Bootstrap typeahead 函数中使用 AJAX/JSON 响应未定义?

转载 作者:行者123 更新时间:2023-11-29 18:22:05 25 4
gpt4 key购买 nike

我创建了一个函数,该函数进行 jquery AJAX 调用并返回 JSON 字符串。就其本身而言,它运行良好——当我将字符串输出到控制台 (console.log) 时,我可以看到 JSON 字符串输出。

function getJSONCustomers()
{
var response = $.ajax({
type: "GET",
url: "getCustomers.php",
dataType: "json",
async: false,
cache: false
}).responseText;
return response;
};

但是,当我设置一个变量来包含该函数调用的输出时:

var mydata = getJSONCustomers();

,然后尝试在我的 Twitter-Bootstrap TypeAhead 功能(表单自动完成)中使用它:

data = mydata;
console.log(data);

我在控制台中收到“未定义”错误。

下面是一段代码:

$(document).ready(function() {

var mydata = getJSONCustomers();

$('#Customer').typeahead({
source: function (query, process) {
customers = [];
map = {};

data = mydata;
console.log(data);

// multiple .typeahead functions follow......
});

有趣的是,如果我将数据变量设置为从 AJAX 函数返回的硬编码 JSON 字符串,一切正常:

data = [{"CustNameShort": "CUS1", "CustNameLong": "Customer One"}]

如何在预输入功能中使用 JSON 字符串?

最佳答案

.responseText 返回一个字符串。您必须先解析字符串才能使用数组:

var mydata = JSON.parse(getJSONCustomers());

也就是说,您应该避免进行同步调用。看看How do I return the response from an asynchronous call?了解如何使用回调/ promise 。

关于javascript - 为什么在 Bootstrap typeahead 函数中使用 AJAX/JSON 响应未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17532967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com