Ajax不发布数据,Chrome扩展程序

在我的Chrome扩展程序中,我能够访问我的’punch.php’文件并接收数据,问题是我似乎无法将数据传递给该文件。 这是我的代码:

jQuery.fn.punch = function(){ $(this).click(function(){ var punchBtn = $(this); var ProjectMemberId = '1' var ProjectId = '1' var str = 'ProjectMemberId='+ProjectMemberId+'&ProjectId='+ProjectId; var xhr = new XMLHttpRequest(); xhr.open("POST", "http://www.ontimepunchcard.com/scripts/punch.php", true); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { $('#PunchBox').html(xhr.responseText); if(xhr.responseText==0) { punchBtn.removeClass('PunchedIn'); } else { punchBtn.addClass('PunchedIn'); } } } xhr.send('ProjectMemberId='+ProjectMemberId+'&ProjectId='+ProjectId); }); }//END PUNCH METHOD 

这是具有所有相同代码的普通Web应用程序的重复。 Id的post为’punch.php’并且是SQL语句的一部分。 该声明在Chrome扩展程序中失败,并返回错误声明,因此我开始回应实际的SQL查询以查看它正在尝试执行的操作。 结果是SQL查询丢失了两个Id,因此错误和查询失败。

我这里有语法问题吗? 是否有可能虽然我设置了谷歌说我应该的方式,我的扩展只能接收数据而不发送? 这里还有其他愚蠢行为吗?

“你确定你的扩展程序中有适当的权限将数据发布到该文件吗?我只是做了一个简单的片段,我从responseText返回”1“。据我所知,该片段很好,只要它运行在扩展页面(不是内容脚本) – Mohamed Mansour 1月9日23:45“

显然这就是答案。

尝试添加Content-typeContent-length标头:

 var str = 'ProjectMemberId='+ProjectMemberId+'&ProjectId='+ProjectId; var xhr = new XMLHttpRequest(); xhr.open("POST", "http://www.ontimepunchcard.com/scripts/punch.php", true); xhr.onreadystatechange = function() { ... } xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Content-length", str.length); xhr.send(str);