簡體   English   中英

AJAX POST 請求丟失

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM