我正在尝试将图片上传到uploads.im,然后发送回来的URL(以及其他信息)。 api的ajax发布成功,但我无法将响应发布到另一个文件(saveImgURL.php),然后从发送的'data'变量中获取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();
});
答案 0 :(得分:0)
您获得的响应是JSON字符串。
根据PHP脚本(saveImgURL.php)处理数据的方式,您有时需要在流程中将返回的数据解析为JSON对象。
在发送之前解析它:
var json = JSON.parse(data);
$.post( "saveImgURL.php", { 'data': json } );
或保持原样,但请注意您正在发送字符串,并使用以下命令在PHP脚本中解析它:
$json_data = json_decode($_POST['data'], true)
;
我当然假设'saveImgURL.php'与原始文件位于同一文件夹中,否则$ .post显然会失败。
此外 - 似乎字符串本身在开头和结尾包含3个无效字符,这将导致您解析它时出现问题 - '('和')'和';';您可以使用jsonvalidatoronline.org等第三方网站来验证回复。
希望这有帮助!