[英]AJAX POST requests getting lost
我在嘗試將 AJAX 請求實施到我沒有創建的預先存在的網站時遇到問題。
我將數據作為 GET 請求發送到 PHP 沒有問題,但是 POST 請求並嘗試訪問 $_FILES 將返回 null。
這是 AJAX:
var someData = 'test';
$.ajax({
url: "post-data.php",
method: "POST",
dataType: "JSON",
data: ({someData}),
success: function(data) {
console.log(data);
}
});
PHP:
<?php echo json_encode($_POST['someData']); ?>
我相信問題的原因可能在於 htaccess 文件或與網站上的其他重定向有關。 該網站是由該公司的一名前員工建立的,我在使用 AJAX POST 和他們建立的其他幾個網站時遇到了同樣的問題。
由於從 POST 更改為 GET 工作正常,我認為我非常簡單的代碼沒有任何問題。
有什么方法可以測試數據是否由於重定向而丟失,還是有其他原因?
首先查看瀏覽器開發工具ctr+shift+J,看看有沒有重定向。 如果不是,那么您需要將數據類型設置為 json 並根據您使用的 JQUERY 的版本,如果您的 Z071EE600458087FD86908B5D4C9.937C 版本 < 1,您可能必須使用“類型”而不是“方法”。
var someData = 'test';
$.ajax({
url: "post-data.php",
method: "POST",
dataType: "json",
data: ({someData}),
success: function(data) {
console.log(data);
}
});
PHP 代碼:
header("Content-Type: application/json", true);
如果這不起作用,請確保您的 URL 絕對正確。 沒有多余的斜線或空格。
我已經設法弄清楚這一點,所有.php 擴展名都有一個 302 重定向到 url 沒有擴展名。 我的代碼中也有錯誤。
Changing the URL in the AJAX to "post-data" without the.php extension allows me to see $_POST in PHP.
我無法訪問文件的另一個問題歸結為我嘗試使用 AJAX 發送 FormData 的方式。
我這樣做的原始代碼是:
var someData = 'test';
var fData = new FormData();
fData.append("images", $("input[name='fileUpload']").prop("files")[0]);
$.ajax({
url: "post-data.php",
method: "POST",
dataType: "JSON",
contentType: false,
processData: false,
data: ({someData, fData}),
success: function(data) {
console.log(data);
}
});
問題是您不能同時發送 FormData 和其他變量。 相反,我必須將我的其他數據 append 到 FormData:
var someData = 'test';
var fData = new FormData();
fData.append("images", $("input[name='fileUpload']").prop("files")[0]);
fData.append("someData", someData);
$.ajax({
url: "post-data.php",
method: "POST",
dataType: "JSON",
contentType: false,
processData: false,
data: fData,
success: function(data) {
console.log(data);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.