2013-11-09 56 views
3

我正在使用angularjs的$ http服務將數據發佈到我的API。它的偉大工程..直到我添加和(例如JSONRequest)等號數據的內容

var request = { 
    'method': 'POST', 
    'url': API_URL + apiActionName, 
    'data': JSONRequest, 
    'withCredentials': true, 
}; 
$http(request). 
success(function(data, status, headers, config) { 
    // handle success 
}). 
error(function(data, status, headers, config) { 
    // handle error 
} 

這個工程的數據包含以下JSONRequest

{ 
    'text':'this is some text' 
} 

然而,當數據包含此

{ 
    'text':'this is = some text' 
} 

該請求被轉義並且服務器無法對POST做任何事情!它似乎與所有其他角色一起工作。

任何幫助將不勝感激!謝謝

+0

這很奇怪。試試雙引號也許吧? –

回答

1

它必須與URI編碼。獲得發送較低級AJAX API的字符串不是uri編碼的。這意味着,當它看到帖子中的=號時,它假定用uri編碼解析它。

由於JSONRequest最初是在var request上面的行上定義的,所有這些信息可能都不存在以回答此問題。對於那個很抱歉。它被定義如下:

var JSONRequest = { 
    'JSON': requestObject; 
} 

其中requestObject是

{ 
    'text':'this is = some text' 
} 

我結束了URI編碼的JSON請求如下

var JSONRequest = 'JSON=' + encodeURIComponent(JSON.stringify(requestObject)); 

這解決了問題,使我的API調用更多對HTTP協議強大。

感謝您的幫助!

+0

順便說一句,JSON =有作爲API接受的包裝對象 – Aaron

+0

這是唯一適用於我的東西。 – TrtG

1

我總是使用JSON.Stringify()爲我的POST有效載荷。

+0

如果不通過JSON字符串,angular會在內部做相同的處理。'http.js'檢查對象並使用內部'toJson'方法調用JSON.stringify https://github.com/angular/angular.js/ blob/master/src/Angular.js#L935 – charlietfl

+1

在JSON.stringify()中,stringify應該是小寫。 – TrtG