2011-01-28 34 views
2

Ajaxを使用してMVC3コントローラにデータを投稿するChromeブラウザ拡張を作成しました。コントローラコードが動作することを確認するために、まずAjaxコードのプロトタイプを作成するためのRazor Webページを作成しました。このコードはWebページ内で動作し、JSONモデルはallをバインドします。 DNSホストとドメイン名を含むIIS7サーバーに公開しました。コードはまだテストページで動作します。Chromeブラウザの拡張機能からMVCコントローラへのJSONデータの投稿

function addUrl() 
{ 
$('#res').html('Adding...'); 
var myData = { url: $('#urlDiv').html(), comments: $('#c1').val() }; 

$.ajax(
     { 
     url: 'http://hostname.domainname/ControllerName/AddUrl', 
     type: "post", 
     dataType: "json", 
     data:JSON.stringify(myData), 
     contentType: "application/json; charset=utf-8", 
     success: function (result) 
      { 
      $('#res').html(result); 
      }, 
     error: function() 
      { 
      $('#res').html('An error occurred'); 
      } 
     } 
    ); 
}; 

このjQuery関数をChrome JavaScriptファイルにコピーし、従来のフォームボタンを使用してポップアップウィンドウから呼び出しました。 IIS7または多分何か(のURLScanがインストールされていない) -

<body onload="buildPopupDom();"> 
<form> 
<h2>Add URL</h2> 
<div id='urlDiv'></div> 
<p>Comments<br /><textarea id="c1" cols="80" rows="3"></textarea></p> 
<p><input type="button" value="Save" id="s1" onclick="addUrl();" /> <input type="button" value="Close" onclick="javascript:window.close();" /></p> 
</form> 

Chromeの拡張機能からいくつかの理由の記事のために404エラーが発生し、MVC3 XSS保護または類似のいくつかは、ポストをブロックしていることと私に起こりました。

+0

マニフェストでドメイン権限を宣言しましたか? – serg

+0

それは答えでした!このスレッドに続く他の人には、リファレンスは次のとおりです:http://code.google.com/chrome/extensions/xhr.html – CrispinH

+0

Serg:この質問を回答として回答した場合、私はそれに期限が到来していると信じています。 – CrispinH

答えて

4

対応するXHRのクロスドメインを作成するには、対応するdomain permissionsをマニフェストで宣言する必要があります。

+0

クロスオリジンXMLHttpRequestを作成するには、ターゲットドメインを含める必要があります(上記参照)。 – CrispinH

関連する問題