簡體   English   中英

如何通過jQuery POST請求發送原始字符串?

[英]How do you send a raw strings through a jQuery POST request?

我試圖通過jQuery.ajax()發布一個原始字符串

例如,

contact_list=352345

我有

$.ajax({
        beforeSend: function(xhr){
            xhr.setRequestHeader('Content-Type', header);
        }
        },
        url: link,
        type: type,
        processData:false,
        data: data,
        success: function(data){
            console.log(data);
        }
     });

大多數時候我發送JSON數據,所以header='application/json'

在服務器端,我回顯$HTTP_RAW_POST_DATA並看到我的JSON字符串就好了。

但是,我有時也希望發送正常的表單數據。 但是當我設置header='application/x-www-form-urlencoded' $HTTP_RAW_POST_DATA為空。

ProcessData是false,所以它不應該只是通過我的字符串?

作為臨時解決方法,我只是將標題保留為application/json並忽略服務器上針對此特定端點的Content-Type

無需額外的工作。 嘗試這個:

$.ajax({
    url: link,
    data: data,
    success: function(data){
        console.log(data);
    }
 });

docs

processDataBoolean:

默認值:true默認情況下,作為對象傳入數據選項的數據(技術上,不是字符串)將被處理並轉換為查詢字符串,適合默認內容類型“application / x-www-form -urlencoded”。 如果要發送DOMDocument或其他未處理的數據,請將此選項設置為false。

我寧願發送一個標志到我的javascript函數,看看有什么樣的輸入

所以你的功能看起來像這樣

function processIt(request_type,link,type,data) {
if(request_type == 'json')
$.ajax({
    beforeSend: function(xhr){
        xhr.setRequestHeader('Content-Type', header);
    }
    },
    url: link,
    type: type,
    processData:false,
    data: data,
    success: function(data){
        console.log(data);
    }
 });
else 
 $.ajax({
url: link,
data: data,
success: function(data){
    //do something
}
 });
}

但是,如果您想要使用您的功能,那就是這樣。

PHP $HTTP_RAW_POST_DATA不適用於enctype =“multipart / form-data”。 http://www.php.net/manual/en/ini.core.php#ini.always-populate-raw-post-data

所以,現在在服務器上我做了以下事情:

if (count($_POST == 0){
    $raw = file_get_contents('php://input');    
}else{
    $raw = '';
    foreach($_POST as $key => $value) {
        $raw = $raw.$key.'='.$value.'&';
    }
}

似乎工作。

暫無
暫無

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

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