我已经设置了一个页面,该页面从表单中获取数据,序列化为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代码不会向客户端输出任何其他文本。 所有其他echo
,print
,调试调用,所有这些东西,都必须删除,因为否则你不会发回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);