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

时间:2019-04-03 21:07:46

标签: php ajax api

我已经设置了一个页面,该页面从表单中获取数据,序列化为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" } } ,这样我就可以将该响应用于其他一些待办事项。

2 个答案:

答案 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代码不会向客户端输出任何其他文本。必须删除所有其他echoprint,调试调用以及所有这些东西,因为否则,您将不会发送回jQuery知道如何解释的有效json编码数据。

答案 1 :(得分:0)

似乎"aaabbbcccaaa".scan(/((.)\2*)/).map(&:first) # => ["aaa", "bbb", "ccc", "aaa"] 使用save_application.php提交的数据来进行curl请求,并且您需要将部分curl响应发送回客户端以用于成功功能。

curl响应已经是JSON,因此最简单的方法就是

$.ajax

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

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

echo $applicantresponse;