繁体   English   中英

将JSON API响应发布到PHP文件

[英]Post json API response to PHP file

我正在尝试将图片上传到uploads.im,然后将其发送回URL(和其他信息)。 ajax发布到api成功,但是我无法将响应发布到另一个文件(saveImgURL.php),该文件随后将从已发送的“数据”变量获取URL并将其保存在数据库中。

HTML:

<form id="postfile" method="POST" action="http://uploads.im/api?upload" enctype="multipart/form-data">
  <input type="file" name="file" />
  <input type="submit" value="SEND FILE">
</form>
<div id="result"></div>

正确的API响应:

({"status_code":200,"status_txt":"OK","data":{"img_name":"abcde.png","img_url":"http:\/\/s1.uploads.im\/abcde.png","img_view":"http:\/\/uploads.im\/abcde.png","img_width":167,"img_height":288,"img_attr":"width=\"167\" height=\"288\"","img_size":"36.1 KB","img_bytes":37002,"thumb_url":"http:\/\/s1.uploads.im\/t\/abcde.png","thumb_width":100,"thumb_height":90,"source":"http:\/\/www.google.com\/images\/srpr\/nav_logo66.png","resized":"0"}});

jQuery的:

$( "#postfile" ).submit(function( event ) {

    var data1;
    var formObj = $(this);
    var formURL = formObj.attr("action");
    var formData = new FormData(this);
    $.ajax({
        url: formURL,
        type: 'POST',
        data:  formData,
        mimeType:"multipart/form-data",
        contentType: false,
        cache: false,
        processData:false,
    success: function(data, textStatus, jqXHR)
    {

        //document.write(data); // displays the correct API response in current doc
        $.post( "saveImgURL.php", { 'data': data } ); //DOES NOT WORK
    },
     error: function(jqXHR, textStatus, errorThrown) 
     {
     }          
    })
    event.preventDefault();
});

您得到的响应是一个JSON字符串。

您很有可能有时需要在此过程中将返回的数据解析为JSON对象,具体取决于您的PHP脚本(saveImgURL.php)处理数据的方式。

在发送之前先解析它:

var json = JSON.parse(data);
$.post( "saveImgURL.php", { 'data': json } );

或保持原样,但请注意您正在发送字符串,并使用以下命令在PHP脚本中对其进行解析:

$json_data = json_decode($_POST['data'], true) ;

我当然假设'saveImgURL.php'与原始文件位于同一文件夹中,否则$ .post显然将失败。

另外-字符串本身在开头和结尾包含3个无效字符,这可能会导致您在解析它时遇到问题-'('和')'和';'; 您可以使用jsonvalidatoronline.org之类的第三方网站来验证响应。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM