我的代码的这部分是我认为问题出在的地方:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type = "text/javascript">
matches = google.contentmatch.getContentMatches();
$(document).ready(function()
{
var messageid
for(var match in matches)
{
for(var key in matches[match])
{
if(key == 'message_id')
{
messageid = matches[match][key];
}
}
}
var name = "Email Test";
var url = 'https://mail.google.com/mail/u/0/#all/' + messageid;
var encodedurl = encodeURIComponent(url);
var dataValues = "name=" + name + "&url=" + encodedurl;
$('#crmbtn').click(function(){
$.ajax({
type: 'GET',
data: dataValues,
url: 'http://someurl',
success: function(){
alert('Sent To CRM')
}
});
return false;
});
});
gadgets.window.adjustHeight(50);
</script>
<form id="myForm">
<input type='button' name='submit' id='crmbtn' value='Send To CRM' />
</form>
问题是我的代码执行了我想要它做的事情,但是一旦它首先将空白数据发送到我的其他php页面然后发送正确的数据,而不是发送我的数据。我猜它是我编码我的ajax函数的方式。
答案 0 :(得分:1)
您还需要encodeURIComponent
name
参数:
var name = encodeURIComponent("Email Test");
…
var dataValues = "name=" + name + "&url=" + encodedurl;
此外,最好将该事件绑定到表单的submit
处理程序,并阻止 操作,例如:
<form id="myForm">
<input type='submit' name='submit' id='crmbtn' value='Send To CRM' />
</form>
(已将type
更改为submit
)和
$('#myForm').submit(function(){ …
当你在对象上进行迭代时,请务必检查hasOwnProperty
:
for(var match in matches)
{
if (matches.hasOwnProperty(match)) {
…
答案 1 :(得分:1)
这只是一个疯狂的猜测(我需要查看更多代码......),但如果#crmbtn
是链接,则需要更改:
$('#crmbtn').click(function(){
为:
$('#crmbtn').click(function(event){
event.preventDefault();
防止打开链接页面。
修改:根据您的更新,我认为这是问题,您可能正在提交表单而没有action
属性,表单会提交给自己。