2014-01-24 2 views
1

Я пытаюсь загрузить изображение в uploads.im, которое затем отправляет обратно URL-адрес (и другую информацию). Сообщение ajax для api успешно, но я не могу опубликовать ответ на другой файл (saveImgURL.php), который затем получит URL-адрес из переданной «данных» и сохранит его в базе данных.Ответ json API на PHP-файл

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(); 
}); 
+0

И как «saveImgURL.php» рассчитывает получить данные? – Musa

ответ

0

Ответ вы получаете это строка 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, для проверки ответа.

Надеюсь, это поможет!

Смежные вопросы