2013-12-18 47 views
0

正常情况下,我们可以发送ajax请求或向服务器提交表单,其中HTTP request body将被编码为这样的name=helloworld&age=123Javascript:如何将任意请求主体POST到服务器?

现在我们的服务器only accept JSON data作为请求体,有没有什么办法可以改变Javascript中的请求体的编码方法?

+0

你可以附上一个代码示例吗? –

+0

@MrROY - 你无法改变它的形式。虽然AJAX请求可以提交为JSON。 – cloudfeet

回答

2

HTML表单为您提供了三种编码数据的选项。 text/plain仅用于调试(并非给浏览器开发者工具提供的非常有用的事件),其他两个都不是JSON。

使用XHR,编码是编码数据。 send方法只需要一个字符串。无论你喜欢,你都可以将数据编码在其中。

function sendJSON() { 
    var data = { 
     name: "helloworld", 
     age: 123 
    }; 

    var json = JSON.stringify(data); 

    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", "/example/"); 
    xhr.setRequestHeader("Content-Type", "application/json"); 
    xhr.send(json); 
} 
+0

他确实表示他在谈论ajax调用,所以我假设他不是在谈论表单提交。 –

+0

@Udi - 提问者说“ajax请求或提交表单”,所以我假设他们对这两者都感兴趣。但是,我认为这个答案应该包括这样一个事实,即对于普通形式你不能做类似的事情。 – cloudfeet

+0

@cloudfeet你说得对。我的错。 –