【问题标题】:Ajax Not Posting Data, Chrome ExtensionAjax 不发布数据,Chrome 扩展
【发布时间】:2012-01-25 03:42:50
【问题描述】:

在我的 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 发布到“punch.php”并且是 SQL 语句的一部分。该语句因 Chrome 扩展而失败,并返回一条错误语句,因此我开始回显实际的 SQL 查询以查看它试图做什么。结果是缺少两个 Id 的 SQL 查询,因此出现错误和失败的查询。

我这里有语法问题吗?是否有可能尽管我按照 Google 所说的方式设置了权限,但我的扩展程序只能接收数据而不能发送?这里还有其他一些愚蠢的事情吗?

【问题讨论】:

  • str 从未使用过。这是故意的吗?您在代码示例中尝试在哪里传递数据?
  • 你确定你的扩展有适当的权限来发布数据到那个文件吗?我刚刚做了一个简单的 sn-p,我从 responseText 返回“1”。据我所知,sn-p 是好的,只要它在扩展页面(不是内容脚本)中运行即可
  • @Mohamed - 就是这样。将此作为答案发布,我会接受它

标签: ajax google-chrome jquery xmlhttprequest google-chrome-extension


【解决方案1】:

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

显然这就是答案。

【讨论】:

    【解决方案2】:

    尝试添加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);
    

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 2014-02-09
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多