将JSON数据从Chrome浏览器扩展发布到MVC控制器

Cri*_*inH 3 jquery json google-chrome-extension asp.net-mvc-3

我编写了一个Chrome浏览器扩展程序,它使用Ajax将数据发布到MVC3控制器.为了确保控制器代码有效,我首先编写了一个Razor网页来对ajax代码进行原型设计.此代码适用于网页,JSON模型绑定所有.我将它发布到一个完整的DNS主机和域名的IIS7服务器上.代码仍然适用于测试页面.

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');
            }
        }
    );  
};
Run Code Online (Sandbox Code Playgroud)

我将此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>
Run Code Online (Sandbox Code Playgroud)

由于某些原因,Chrome扩展程序中的帖子会出现404错误,并且我发现某些MVC3 XSS保护或类似内容阻止了帖子 - 或者IIS7中的某些内容(UrlScan未安装).

ser*_*erg 5

为了使跨域XHR调用需要在清单中声明相应的域权限.