JQuery Ajax Firefox错误

时间:2012-04-05 10:41:20

标签: jquery ajax firefox

以下代码适用于Chrome和IE

$.get("../ajax/BTBookAppointment.aspx?dsl=" + telNumberBox.value + "&date=" + requiredDate.value + "&timeslot=" + ddTimeslot.value, function (response, status, xhr) {
//DO some stuff
}); 

但是在Firefox(版本11.0)中,回调函数永远不会被命中。我使用了带断点的firebug,并验证了从未输入回调。页面似乎刷新,之前由JavaScript显示的元素再次可见。

我不知道这个bug是什么,甚至不知道如何进一步调试它。任何建议将不胜感激。

编辑:Fiddler和firebug从不显示HTTP get。我也尝试明确写出$ .get(见下文)并获得相同的行为

EDIT2:我已经尝试了Darin Dimitrov提到的建议,它仍然表现出相同的行为(点击按钮后页面会回复)。这是现在的代码。

的Javascript

function bookAppointment() {

    var url = "../ajax/BTBookAppointment.aspx";
    var dsl = "01753893530"
    var date = "20-04-2012";
    var timeslot = "PM";

    var data = { dsl: dsl, date: date, timeslot: timeslot };

    $.ajax({
        url: "../ajax/BTBookAppointment.aspx",
        data: data,
        success: function (response, status, xhr) {
       alert('into callback');
        },

    });

    return false;
}

HTML

<button id="btnBookAppointment" onclick="bookAppointment();"> Book</button>

3 个答案:

答案 0 :(得分:4)

很难说问题中提供的信息可能是什么问题。您是说您从未在FireBug的Network标签中看到发送的请求,并且页面刷新。这可能是由于您在AJAX调用之前的代码中出现了一些javascript错误,这会阻止它被触发。此外,如果您在某些DOM元素的单击或提交处理程序中调用此AJAX请求,则可能需要确保通过从此回调返回false来取消默认事件。另一点是您正在进行的GET参数的正确URL编码。

所以这是一个样本:

$('#someElement').click(function() {
    // TODO: adapt the selectors to match your input field ids
    var dsl = $('#telNumberBox').val();
    var date = $('#requiredDate').val();
    var timeslot = $('#ddTimeslot').val();

    var data = { dsl: dsl, date: date, timeslot: timeslot };
    $.get('../ajax/BTBookAppointment.aspx', data, function (response, status, xhr) {
        //DO some stuff
    }); 

    return false;
});

另外,请不要忘记在发送AJAX请求之前观看可能发生的javascript错误的FireBug控制台。

如果这不起作用,我会尝试对请求值进行硬编码,以尝试进一步缩小错误的可能性:

var dsl = '123456789';
var date = '2012-04-07';
var timeslot = '14:15';

var data = { dsl: dsl, date: date, timeslot: timeslot };
$.get('../ajax/BTBookAppointment.aspx', data, function (response, status, xhr) {
    //DO some stuff
}); 

你可以通过硬编码一些值(这可以消除错误的可能性)将这种错误缩小技术应用到脚本的不同部分,直到你找到不会杀死IE和Chrome但却杀死FireFox的冒烟枪。 / p>

答案 1 :(得分:2)

我不知道为什么但是即使bookAppointment()返回false,按钮仍然会触发FF中的默认行为(回发)。将一个返回false添加到按钮固定的东西(见下文)。

<button id="btnBookAppointment" onclick="bookAppointment();return false;">

答案 2 :(得分:0)

大部分信息都不可用,例如

JQuery版本?

JQuery UI版本?

何时调用ajax请求?

这里我将如何为这类问题进行调试:

a)首先,我要确保我的jQuery版本没有RELATIVE网址的问题     [谷歌术语“jquery ajax relative url”]

b)检查在加载Jquery之后是否实际创建了Ajax对象

 $(document).ready(function(){
     //your ajax code
   });

c)检查即使ajax对象是CREATED,也可以调用正确的方法或事件来启动事件

d)写一个静态网址并在新标签中模仿请求,例如    打开新标签并输入网址

 http://domain/../ajax/BTBookAppointment.aspx?dsl=xx&date=yy&timeslot=zz

e)创建一个新的firefox配置文件,不添加任何额外的插件。测试你的申请    那里

让我知道你走了多远。希望这会有所帮助:))