我有一个安静的网络服务,我正在尝试通过我的网页通过jquery调用发出HTTP POST请求。
<html>
<head>
<script type="text/javascript" src="js/newjavascript.js"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jqueryui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"> </script>
<script type="text/javascript" src="js/jquery-ui-1.8.22.custom.min.js"> </script>
<script type="text/javascript" src="js/jquery-1.7.2.min.js"> </script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<input type="text" name="name" value="" id="name"/>
<input type="submit" value="submit" onclick="intialize()"/>
<script>
function formToJSON() {
return JSON.stringify({"name": $('#name').val() });
}
</script>
<script>
function intialize(){
$.ajax({
type: 'POST',
contentType: 'application/json',
url: "http://localhost:41191/test/resources/storeincompleteform",
dataType: "json",
data: formToJSON(),
success: function(data, textStatus, jqXHR){
alert(' success');
},
error: function(jqXHR, textStatus, errorThrown){
alert('error: ' + textStatus);
}
});
}
</script>
</body>
</html>
但是上面的代码不起作用。Web 服务工作正常
这是一个 XSS 问题,可能是由于端口不同。改变:
dataType: "json"
自:
dataType: "jsonp"
您的脚本正在发布到其他端口。这与浏览器的同源策略冲突。
如果你试图从服务器检索数据,你可以使用jQuery的内置JSONP技术与一些服务器端脚本相结合来规避这一点。
但是,由于在您的情况下,您尝试将数据发布到服务器,因此您有两种选择:
- 确保 XMLHttpRequest 是相同的原始
- 利用现代浏览器中可用的跨域XMLHttpRequest技术;在这种情况下,您必须配置服务器以提供
Access-Control-Allow-Origin
标头,以允许您从中发布网站。