获取对原始函数调用的JSONP响应

时间:2019-07-03 11:55:42

标签: javascript php html json ajax

基本来说,我正在尝试使用JSONP进行跨域AJAX调用。 JS和PHP文件必须位于不同的域中。我似乎无法将返回的数据恢复到原始功能。

解释页面的工作方式。用户将在输入框中输入内容。例如姓

Input and search.

用户单击搜索后,将调用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变量。

我希望这是有道理的,我将非常感谢任何能帮助我的人。

1 个答案:

答案 0 :(得分:-1)

您要尝试执行的操作将不起作用,因为$.ajax调用是异步进行的。

此时不执行返回的函数:

var jsonOfData = getInfo($('#searchInput').val());

尝试在success调用的$.ajax函数中构建逻辑。