簡體   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