2017-02-20 64 views
0

我正在處理用戶可以通過接口設置值併發送ajax請求(類似於rest api)的應用程序。用多種類型的數據發送ajax請求

我想知道如何在單個請求中發送屬於多種類型的數據。例子如下,

表單數據

var data = {'key1':'Key1Value','key2':'Key2Value'}; 
//content-type : application/x-www-form-urlencoded 

原始數據

var data = 'This is plain text raw value'; 
//content-type : text/plain 

我應該如何結合以上數據發送下面的Ajax請求,

$.ajax({ 
    type: "POST", 
    url: "ajax/activity.php", 
    data: {combined data}, 
    timeout: 3000, 
    async: true, 
    success: APIClient.baseSuccess, 
    error: APIClient.baseError 
    }); 
+3

服務器期望收到什麼? –

+1

每個HTTP請求應該只包含一個ContentType頭,因此您不能同時發送*兩種不同的類型*。您可以執行2個請求,也可以將請求日期封裝到某個通用對象中;就像'{url-encoded:{...},plain:'...'}'並更新您的服務器來管理它。 – Wikiti

回答

2

也許與這兩個作爲參數發送JSON對象?

$.ajax({ 
     type: "POST", 
     url: "ajax/activity.php", 
     data: { 
      first: data_object, 
      second: data_string 
     }, 
     timeout: 3000, 
     async: true, 
     success: APIClient.baseSuccess, 
     error: APIClient.baseError 
    }); 
1

嘗試這樣..

var data = {'key1':'Key1Value','key2':'Key2Value'}; 
var text= 'This is plain text raw value'; 
data.text = text; //adds text to data object 

然後

ajax

data: data, 
1

使用$.extend()函數。

var dataText = 'This is plain text raw value'; 
 
$.ajax({ 
 
    type: "POST", 
 
    url: "ajax/activity.php", 
 
    data: $.extend({ 
 
    key1:'Key1Value',key2:'Key2Value' 
 
}, dataText), 
 
    timeout: 3000, 
 
    async: true, 
 
    success: APIClient.baseSuccess, 
 
    error: APIClient.baseError 
 
});

0

你可以使用JSON發送您的所有各種類型的數據:

{ 
    "data": { 
     "arrayOfValues": { 
      "key1": "Key1Value", 
      "key2": "Key2Value" 
     }, 
     "someString": "This is some tring value that I want to send" 
    } 
} 

指定該對象的變量,並在你的AJAX調用發送。當然,你需要考慮服務器端接收數據的方式。