[英]CakePHP fails loading $ajax->form with Error 503 Service Unavailable
[英]AJAX FormData Post - 503 Service Unavailable
我已经广泛搜索了这个问题而没有用,或者我错过了这个问题。 请转发给我,我可以做些什么来改进解释。
我有一个'文件'输入,在'更改'上使用Ajax调用Php文件,如下所示:
$(document).on('change', 'input[name="photo"]', function(){
var file = this.files[0];
var formData = new FormData();
var user = localStorage.getItem("user");
formData.append('_file', file);
formData.append('_user', user);
$.ajax({
type: "POST",
cache: false,
url: ip + "php/insert_img.php",
data: formData,
contentType: false,
processData: false,
success: function (e) {
// do something
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus, errorThrown);
}
});
});
这应该是一个phonegap应用程序,我正在使用Chrome的Ripple Emulator和Apache Cordova / PhoneGap平台进行测试。
现在,一切正常,当使用localhost时,PHP打印formData,但是,当我使用相同的PHP文件上传到服务器(因此Ajax的url选项上的'ip'变量),这是一个不同的故事。
一段时间后它返回错误设置,当检查Chrome的开发人员工具>网络选项卡时,我可以看到请求的“状态代码”为:503服务不可用。 但是,如果我将数据设置更改为FormData()以外的任何设置,它就可以工作。
似乎问题来自服务器设置,但我不知道问题可能是什么。
在使用AJAX时,我经常遇到过这个问题所以这是我最初的想法:
“ip”定义了吗? url:ip +“php / insert_img.php”
我还发现删除一些额外的AJAX选项解决了这个问题。 修改后的代码如下:
$(document).on('change', 'input[name="photo"]', function(){
var file = this.files[0];
var formData = new FormData();
var user = localStorage.getItem("user");
formData.append('_file', file);
formData.append('_user', user);
$.ajax({
type: "POST",
url: ip + "php/insert_img.php",
data: formData,
success: function (e) {
// do something
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus, errorThrown);
}
});
});
希望这可以帮助。
----------编辑----------
经过一番搜索之后,我相信问题就在于您要附加_file
和_user
数据。 如果此数据的值是数组,则必须对其进行“字符串化”:
formData.append('_file', JSON.stringify(file));
formData.append('_user', JSON.stringify(user));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.