0

安らかな Web サービスがあり、Web ページから 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 サービスは正常に機能しています。

4

2 に答える 2

0

これは XSS の問題であり、異なるポートが原因である可能性があります。変化する:

dataType: "json"

に:

dataType: "jsonp"
于 2012-09-27T15:19:14.417 に答える
0

スクリプトが別のポートに投稿しています。これは、ブラウザのSame Origin Policyと競合します。

サーバーからデータを取得しようとしている場合は、 jQuery の 組み込み JSONPテクノロジをサーバー側のスクリプトと組み合わせて使用​​することで、これを回避できます。

ただし、あなたのケースではデータをサーバーに投稿しようとしているので、2 つのオプションがあります。

  1. XMLHttpRequestが同じオリジンであることを確認する
  2. 最新のブラウザーで利用可能なクロスドメイン XMLHttpRequest テクノロジーを利用しますその場合、Access-Control-Allow-Origin投稿元のサイトを許可するヘッダーを提供するようにサーバーを構成する必要があります。
于 2012-09-27T15:16:22.830 に答える