我已经设置了一个页面,该页面从表单中获取数据,序列化为JSON,然后使用AJAX调用PHP文件来处理表单数据并将其通过cURL发送到API。
如何从API获得响应以作为AJAX成功功能的一部分返回?
在我的项目开始时,我能够完成此操作,因为我使用的是php。但是不能使用该方法,因为该文件是通过AJAX调用而不是包含程序执行的。
我尝试遵循this tutorial,但是一直发现错误。
我还搜索,查看和尝试了来自该网站上各种帖子的更多建议,甚至超出了我的计算能力。现在,我正在寻求帮助。
这是我的 index.php 文件中的相关ajax。
video_tag post.video_url.to_s, autoplay: true, loop: true, class: :standard_post_video
这是 save_application.php 文件的相关部分。
$.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');}
});
最后,返回的 $ applicantresponse 格式如下:
$curl = curl_init();
curl_setopt_array($curl, array(
//stuff here
));
$applicantresponse = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
最终,我想将一个变量设置为links-> resume的值(例如,成功函数内的index.php上的{
"applicationId": 123456789,
"links": {
"link1": "https://thisisalinkforLINK1.html", //THIS IS THE VALUE I WANT
"link2": "https://thisisalink.html",
"link3": "https://thisisalink.html"
}
}
,这样我就可以将该响应用于其他一些待办事项。
答案 0 :(得分:0)
您需要从$applicantresponse
文件中输出save_application.php
,以便将其返回到调用代码,并且需要更改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编码数据。
答案 1 :(得分:0)
似乎"aaabbbcccaaa".scan(/((.)\2*)/).map(&:first) # => ["aaa", "bbb", "ccc", "aaa"]
使用save_application.php
提交的数据来进行curl请求,并且您需要将部分curl响应发送回客户端以用于成功功能。
curl响应已经是JSON,因此最简单的方法就是
$.ajax
这会将整个curl响应发送回客户端。
如果只想发送它的链接之一,则需要对其进行解码并提取所需的特定片段,然后对该片段重新编码。
echo $applicantresponse;