我正在尝试通过jQuery将文件上传到我的远程服务器,但我似乎无法让它工作。
用户需要能够上传pdf文件,然后由服务器处理并保存到根文件夹。
的jQuery
$('form').submit(function (e) {
var fd = new FormData();
fd.append('file', $('#file')[0].files[0]);
$.ajax({
cache: false,
beforeSend: function (xhr) {
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("pragma", "no-cache");
},
url: 'http://www.codekraken.com/testing/pointify/test.php?callback=?',
data: fd,
dataType: "json",
processData: false,
contentType: false,
type: 'POST',
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
e.preventDefault();
});
PHP
<?php
header('content-type: application/json; charset=utf-8');
$name = $_FILES["fd"]["name"];
echo ($_GET['callback'] . '('.json_encode($name).')');
?>
HTML
<form>
<input type="file" id="file" name="file">
<input type="submit">
</form>
当我提交文件(例如input.pdf
)然后按提交时,我会收到回复(null)
。我希望得到文件的名称input.pdf
,这意味着我错过了这个过程中的关键步骤。
答案 0 :(得分:2)
我猜这个
$name = $_FILES["fd"]["name"];
应该是
$name = $_FILES["file"]["name"];
答案 1 :(得分:0)
我只是想让这个显而易见,所以我回答了这个问题的主要问题。
JSONP
仅适用于请求,因此POST
无法使用它。随后,您可以使用CORS
来解决问题。
I found a site列出了您可以启用CORS
的许多类型的服务器,我建议您查看。
就我而言,我在PHP代码中使用了以下标题:
header("Access-Control-Allow-Origin: *");
这会打开所有请求的页面,但它仍然没有使用我的jQuery AJAX
代码。为了解决这个问题,我不得不删除设置标题的代码部分,这在发出这些请求时显然是不允许的。所以,我删除了这部分:
beforeSend: function (xhr) {
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("pragma", "no-cache");
},