【发布时间】:2015-10-12 10:44:33
【问题描述】:
我已经对这个问题进行了广泛的搜索,但无济于事,或者我可能错过了这个问题。请把我能做的任何事情转达给我以改进解释。
我有一个“文件”输入,它在 'change' 上使用 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 上的 'ip' 变量url 选项),那是另一回事。
一段时间后它返回 error 设置,当检查 Chrome 的开发者工具 > 网络选项卡时,我可以看到请求的“状态代码”是:503 服务不可用。 但是,如果我将 data 设置更改为 FormData() 以外的任何设置,它就会起作用。
似乎问题来自服务器设置,但我不知道问题可能是什么。
【问题讨论】:
-
我的第一个想法是仔细检查网址。正如您提到的
ip已定义,但也许只是将其写出到控制台以确保。将console.log(ip + "php/insert_img.php");添加到更改功能中,看看会发生什么。 -
a
503表示服务器接收请求并有问题处理它。还要检查服务器日志,了解问题的性质。如果您有权访问服务器代码库,请注销请求的详细信息(标头、有效负载、请求类型等...)。 -
ip 很好,正如我之前提到的,如果我更改数据类型,说 data: {someting: value} 并使用它,它就可以工作。似乎与我使用的 FormData 构造函数有关。