簡體   English   中英

如何讓Jquery發送POST數據來填充PHP中的$ HTTP_RAW_POST_DATA var?

[英]how to get Jquery to send POST data to populate $HTTP_RAW_POST_DATA var in PHP?

我正在嘗試整理一些舊代碼。

以下是執行ajax請求的代碼的主要部分的簡要說明:

var xmlHttp;
    try {
    // Firefox, Opera 8.0+, Safari
            xmlHttp=new XMLHttpRequest();
    } catch (e) {
    // Internet Explorer
            try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                    try {
                            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {
                            $j.prompt("Your browser does not support AJAX!");
                    return;
                    }
            }
    }
    xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4){
            // Get the data from the server's response
                // returns json data
                  //i know, don't ask
                eval(xmlHttp.responseText);

                // doing stuff with the json data
                ...
                etc
            }
    }
    xmlHttp.open("POST","fetchData.php",true);

    //sample data passed
    var request ="51.5&-0.12";
    xmlHttp.send(request);

我正在嘗試轉換為:

    $j.ajax({
        type: "POST",
        url: "fetchData.php",
        success: function(data) {
            mapFn._showSidebarHotels(data);
        },
        cache: false,            
        data: "51.5&-0.12",
        dataType: "json",
        processData: false
    })

遺留代碼填充$ HTTP_RAW_POST_DATA var,遺留后端代碼(我不希望更改)使用該變量。

使用jquery調用時,似乎沒有填充$ HTTP_RAW_POST_DATA,並且奇怪的是$ _POST []也似乎為

我注意到,在比較兩個ajax調用時,firebug的POST選項卡中的差異在於,jQuery版本具有“ application / x-www-form-urlencoded”作為進一步的信息,而傳統調用則沒有。

我相信問題歸結於與jquery ajax請求一起發送的標頭的類型,但是我不確定如何進一步使用jquery操作這些標頭。

我的問題是:

  • 我的jQuery調用正確嗎? 鑒於我有一個空的$ POST數組
  • 如何使用jquery的參數填充$ HTTP_RAW_POST_DATA?

數據在發送前被轉換成查詢字符串。 可以通過將processData設置為false來避免此處理。

例:

將xml文檔作為數據發送到服務器。 通過將processData選項設置為false,可以防止將數據自動轉換為字符串。

var xmlDocument = [create xml document];
$.ajax({
  url: "page.php",
  processData: false,
  data: xmlDocument,
  success: handleResponse
});

那么,您是否嘗試過更改內容類型? 也許將其設置為一個空字符串(正如您所說的舊調用未提供內容類型)?

我在服務器期望原始發布數據為JSON時遇到了類似的問題。 將內容類型更改為“ application / json”后,它可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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