Ajax发送第一个空白数据

时间:2011-06-13 16:29:49

标签: php javascript jquery ajax json

我的代码的这部分是我认为问题出在的地方:

    <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函数的方式。

2 个答案:

答案 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属性,表单会提交给自己。