AJAX功能问题

时间:2011-09-30 20:05:24

标签: jquery

我使用函数通过Ajax发布结果。当我测试以查看函数是否被调用时,我添加一个警报。一切正常,但一旦我删除警报,我的结果就不会发布......导致它的原因是什么?

function SendInvitesF(invType, invWho, projID) {            
    $.ajax({
        url: "ajax.php",
        type: POST",
        data: "op=sendInvites&inviteMsgType="+invType+"&invitees="+invWho+"&proj="+projID   
    });
    alert("test "+projID) // test alert <<<
}

$("#btnSend").click(function() {
    if($("#customMsg").attr("checked")) {               
        var invType = "custom";
    } else {
        var invType = "default";
    }
    var invWho = $(".radioB:checked").val();
    var projID = $("#testID").val();

    SendInvitesF(invType, invWho, projID);
});

2 个答案:

答案 0 :(得分:2)

我怀疑您在onclick或onsubmit事件中调用此函数,并且您没有通过返回false取消默认操作。此外,您没有正确编码任何参数的url。为此,请使用数据哈希:

function SendInvitesF(invType, invWho, projID) {            
    $.ajax({
        url: 'ajax.php',
        type: 'POST',
        data: { 
            op: 'sendInvites',
            inviteMsgType: invType,
            invitees: invWho,
            proj: projID   
    });
    return false;
}

然后如果你在锚点的onclick中调用它:

// I guess btnSend is a submit button or an anchor so make sure
// you cancel the default action by returning false from the click
// callback
$('#btnSend').click(function() {
    if ($('#customMsg').attr('checked')) {               
        var invType = 'custom';
    } else {
        var invType = 'default';
    }
    var invWho = $('.radioB:checked').val();
    var projID = $('#testID').val();

    return SendInvitesF(invType, invWho, projID);
});

注意我们如何返回false,从而取消默认操作,这将是一个重定向,当然不会留下时间让AJAX请求执行。当您在函数末尾发出警报时,这将停止任何脚本执行,并且AJAX调用有时间命中服务器。

答案 1 :(得分:0)

您是否尝试在成功处理程序上添加警报?确保ajax调用实际成功通过?也像Darin一样,你可能在onClick上使用过,忘了取消默认操作。