在我的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查询以查看它正在尝试执行的操作。结果是SQL查询丢失了两个Id,因此错误和查询失败。
我这里有语法问题吗?是否有可能虽然我设置了谷歌说我应该的方式,我的扩展只能接收数据而不发送?还有其他愚蠢的事情发生在这里吗?
答案 0 :(得分:2)
“你确定你的扩展程序中有适当的权限将数据发布到该文件吗?我只是做了一个简单的代码片段,我从responseText返回”1“。据我所知,代码片段很好,只要很长时间因为它在扩展页面(而不是内容脚本)中运行 - Mohamed Mansour 1月9日23:45“
显然这就是答案。
答案 1 :(得分:1)
尝试添加Content-type
和Content-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);