2011-01-28 120 views
2

我已经编写了一个使用Ajax将数据发布到MVC3控制器的Chrome浏览器扩展。为了确保控制器代码正常工作,我首先编写了一个Razor网页来为ajax代码创建原型。这段代码在网页中,JSON模型绑定一个all。我将它发布到一个完整的DNS主机和域名的IIS7服务器。该代码仍然可以在测试页面上运行。将Chrome浏览器扩展的JSON数据发布到MVC控制器

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文件中,并通过传统的窗体按钮从弹出窗口调用它。

<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保护或类似挡住了后 - 或许在一些IIS7(未安装UrlScan的)。

+0

您是否声明了清单中的域权限? – serg 2011-01-28 22:40:05

+0

这就是答案!对于此主题后面的其他人,请参考http://code.google.com/chrome/extensions/xhr.html – CrispinH 2011-01-29 10:10:51

回答