基本来说,我正在尝试使用JSONP进行跨域AJAX调用。 JS和PHP文件必须位于不同的域中。我似乎无法将返回的数据恢复到原始功能。
解释页面的工作方式。用户将在输入框中输入内容。例如姓
用户单击搜索后,将调用searchClick()函数。此函数将用户已插入到输入框中的文本带入并调用另一个名为getInfo()
的函数。
function searchClick() {
var jsonOfData = getInfo($('#searchInput').val());
console.log(jsonOfData );
}
getInfo()
函数必须位于其他域的JS文件中。
function getInfo(surname) {
$.ajax({
url: "https://www.otherdomain.com/api/lookup.php",
dataType: 'jsonp',
crossDomain: true,
data: {
surname: surname
},
success: (data) => {
console.log(data); // This works
return data; // This doesn't
}
});
}
此ajax调用转到我的PHP页面,并在数据库上进行搜索。然后,它创建了一个JSON数组并将其发送回。通过研究,我没有以通常的echo json_encode($array);
结尾的文件,而是以
echo $_GET['callback'] . "(" . json_encode($responseArr) . ")";
这是我遇到的问题。如您所见,在AJAX成功函数中,数据已成功显示并记录到控制台,但是我无法将其返回到原始的jsonOfData
变量。
我希望这是有道理的,我将非常感谢任何能帮助我的人。
答案 0 :(得分:-1)
您要尝试执行的操作将不起作用,因为$.ajax
调用是异步进行的。
此时不执行返回的函数:
var jsonOfData = getInfo($('#searchInput').val());
尝试在success
调用的$.ajax
函数中构建逻辑。