从 API 调用发送 PHP 的 JSON 响应作为 AJAX 成功函数的一部分



我已经设置了一个页面,该页面从表单中获取数据,序列化为JSON,然后使用AJAX调用PHP文件来处理表单数据并通过cURL将其发送到API。

如何让来自 API 的响应作为 AJAX 成功函数的一部分返回?

在我的项目开始时,我能够完成这个,因为我使用 php 作为包含。但不能使用该方法,因为文件是从 AJAX 调用而不是从包含执行的。

我尝试按照本教程进行操作,但只是不断捕获错误。

我还从这个网站上的各种帖子中搜索、审查和尝试了更多的建议,我什至数不清。现在,我正在寻求一些帮助。

这是我的索引.php文件上的相关 ajax。

$.ajax
({
type: "POST",
dataType : 'json',
async: false,
url: 'save_application.php',
data: { filename: fileName,  applicationData: jsonFormString, job: adid },
success: function () { console.log("done");},
failure: function() {console.log('error');}
});

这是save_application.php文件的相关部分。

$curl = curl_init();
curl_setopt_array($curl, array(
//stuff here
));
$applicantresponse = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

最后,返回的$applicantresponse的格式如下:

{
"applicationId": 123456789,
"links": {
"link1": "https://thisisalinkforLINK1.html", //THIS IS THE VALUE I WANT
"link2": "https://thisisalink.html",
"link3": "https://thisisalink.html"
}
}

最终,我想在成功函数中将一个变量设置为链接>恢复的值(例如:var resumeLink = (something goes here); \returns https://thisisalinkforLINK1.html)回到我的索引.php,以便我可以将该响应用于其他一些待办事项。

您需要从save_application.php文件中输出$applicantresponse,以便将其返回到调用代码,并且需要更改 ajax 代码中的success函数以使用该数据。 它看起来像这样:

$applicantresponse = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
echo json_encode($applicantresponse);

然后。。。

$.ajax
({
...
success: function (data) {
console.log(data.links.link1);
// do something with the data that was returned
},
...
});

重要的一件事是你的php代码不会向客户端输出任何其他文本。 所有其他echoprint,调试调用,所有这些东西,都必须删除,因为否则你不会发回jQuery知道如何解释的有效json编码数据。

看起来save_application.php使用$.ajax提交的数据进行 curl 请求,您需要将部分 curl 响应发送回客户端以在成功函数中使用。

curl 响应已经是 JSON,所以最简单的事情就是

echo $applicantresponse;

这会将整个 curl 响应发送回客户端。

如果您只想发送其中一个链接,则需要对其进行解码并提取所需的特定片段,然后重新编码该片段。

$applicantresponse = json_decode($applicantresponse);
$link = $applicantresponse->links->link1;
echo json_encode($link);

最新更新