0

我有一个安静的网络服务,我试图通过我的网页通过 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> 

但是上面的代码不工作。网络服务工作正常

4

2 回答 2

0

您的脚本正在发布到不同的端口。这与浏览器的Same Origin Policy冲突。

如果您尝试从服务器检索数据,您可以使用jQuery 的 内置 JSONP技术结合一些服务器端脚本来规避这一点。

但是,由于在您的情况下您正在尝试将数据发布到服务器,因此您有两种选择:

  1. 确保XMLHttpRequest是同源的
  2. 利用现代浏览器中可用的跨域 XMLHttpRequest技术;在这种情况下,您必须配置您的服务器以提供Access-Control-Allow-Origin允许您发布的站点的标题。
于 2012-09-27T15:16:22.830 回答
0

这是一个 XSS 问题,可能是由于不同的端口。改变:

dataType: "json"

至:

dataType: "jsonp"
于 2012-09-27T15:19:14.417 回答