[英]How do I do a POST with jQuery that sends a JSON and not raw query?
我有以下HTML。 它应该对服务器执行POST(在下面的MWE中,我只是使用cnn.com做到了)。
但是,它并没有达到我的期望,即以JSON格式格式化POST请求。 相反,它给出了以下内容
x1=y1&x2=y2
作为请求主体
虽然它应该给像
{ "x1": "y1", "x2": "y2"}
使服务器正确响应。
这是代码:
<!-- jQuery Version 1.11.0 -->
<script src="js/jquery-1.11.0.js" }}"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js" }}"></script>
<!-- Plugin JavaScript -->
<script src="js/jquery.easing.min.js" }}"></script>
<script src="js/classie.js" }}"></script>
<script src="js/cbpAnimatedHeader.js" }}"></script>
<!-- Contact Form JavaScript -->
<script src="js/jqBootstrapValidation.js" }}"></script>
<!--
<script src="js/contact_me.js" }}"></script>
-->
<!-- Custom Theme JavaScript -->
<script src="js/freelancer.js" }}"></script>
<form action="" method="post" name="demoform" id="demoform">
<input type=hidden name=x1 value=y1 id=x1>
<input type=hidden name=x2 value=y2 id=x2>
<input type="button" value="demo" name="button" id="button">
</form>
<script>
$.sendRequest = function(form) {
$.ajax({
type: "POST",
url: "http://www.cnn.com",
data: form.serialize(),
dataType: 'application/json',
success: function(data, textStatus){
}
});
}
$('#button').click(function () {
$.sendRequest($("#demoform"));
});
</script>
只是注意,我想做以下事情:
curl -X POST "https://www.cnn.com" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"x1\": \"y1\", \"x2\": \"y2\"}"
编辑:我会注意到,当我在浏览器中执行“检查”并检查请求标头时,它们不是预期的,它们还有很多其他内容,而没有诸如content-type:application / json这样的内容在以下评论之后添加。 (而是显示内容类型:text / html)。 我不确定为什么它会完全忽略我的标题。
dataType: 'application/json',
dataType描述您希望从服务器接收回的格式,并且不采用MIME类型。
contentType描述您要发送的格式。
更改为:
dataType: "json",
contentType: "application/json",
data: form.serialize(),
此功能URL以一种形式对数据进行编码。 您需要构造一个对象并将其转换为JSON。
data: JSON.stringify({ foo: "some value", bar: "some value" }),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.