Ajax未发布数据,Chrome扩展

Ajax未发布数据,Chrome扩展,ajax,google-chrome,jquery,xmlhttprequest,google-chrome-extension,Ajax,Google Chrome,Jquery,Xmlhttprequest,Google Chrome Extension,在我的Chrome扩展中,我能够访问我的“punch.php”文件并接收返回的数据,问题是我似乎无法将数据传递到该文件。这是我的密码: jQuery.fn.punch = function(){ $(this).click(function(){ var punchBtn = $(this); var ProjectMemberId = '1' var ProjectId = '1' var str = 'ProjectMe

在我的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查询,以查看它试图执行的操作。结果是缺少两个Id的SQL查询,因此出现错误并导致查询失败


这里有语法问题吗?尽管我拥有谷歌所说的权限设置,但我的扩展只能接收数据而不能发送数据,这有可能吗?这里还有其他愚蠢之处吗?

尝试添加
内容类型
内容长度
标题:

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);

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


显然这就是答案。

str
从未被使用过。这是故意的吗?在代码示例中,您试图在何处传递数据?您确定您的扩展名中有将数据发布到该文件的适当权限吗?我只是做了一个简单的片段,从responseText返回“1”。就我所见,这个代码片段是好的,只要它在扩展页面(而不是内容脚本)@Mohamed中运行——就是这样。把这个作为答案贴出来,我会接受的