在我的页面中,我有一个表单可以在外部服务上上传照片,该服务提供api,upload.im,我需要返回上传图像的URL。我真的无法让这个工作......
此API的文档页面为here。
我在PHP页面添加了一个表单:
<form enctype="multipart/form-data" name="UploadForm" id="UploadForm" action="http://uploads.im/api" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" name="upload" id="upload" />
<input type="hidden" name="resize_width" id="resize_width" value="" />
<input type="hidden" name="thumb_width" id="thumb_width" value="250" />
<input type="hidden" name="format" id="format" value="xml" />
<input type="submit" id="Submit" name="Submit" />
</form>
我还尝试使用此jQuery代码提交带有所选图像的表单:
$(document).ready(function () {
$('#UploadForm').on('submit', function(e) {
e.preventDefault();
var data = new FormData(jQuery('UploadForm')[0]);
jQuery.ajax({
url: 'http://uploads.im/api',
data: data,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data){
console.log(data);
}
});
});
});
使用此代码,我在控制台中收到错误: screen.png http://i68.tinypic.com/zmnyq8.png 这是API的错误代码;这意味着代码可以工作,但提交表单的方式是错误的。问题在哪里?
谢谢!
答案 0 :(得分:3)
在这里,我刚刚在JS代码中进行了一些更改:
$(document).ready(function () {
$('#UploadForm').on('submit', function(e) {
e.preventDefault();
var data = new FormData($(this));
data.append('upload', $('#upload')[0].files[0]);
jQuery.ajax({
url: 'http://uploads.im/api',
data: data,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data){
console.log(data);
console.log(data.data.thumb_url);
console.log(data.data.img_url);
}
});
});
});
答案 1 :(得分:1)
问题可能与这一行有关:
var data = new FormData(jQuery('UploadForm')[0]);
应为#UploadForm
。
答案 2 :(得分:0)
尝试如下。
CALL ECHO %%errorlevel%%
将节点传递给FormData构造函数: FormData()构造函数创建一个新的FormData对象
参数:HTML var data = new FormData( $('#UploadForm') );
元素 - 在指定时,FormData对象将填充表单的当前键/值。它还将编码文件输入内容。
参考:https://developer.mozilla.org/en-US/docs/Web/API/FormData/FormData