Javascript Firefox未传输Ajax.Updater POST参数

Javascript Firefox未传输Ajax.Updater POST参数,javascript,ajax,forms,prototypejs,params,Javascript,Ajax,Forms,Prototypejs,Params,我正在调试别人编写的代码——我也是Ajax和JS的新手。下面显示的代码使用Ajax原型JavaScript框架1.6.0.1版提交一个简单的联系表单,并使用响应更新页面。它与IE8完美配合,但与Firefox配合失败。我已将故障追溯到post参数。当Firefox作为浏览器时,目标文件mail.php未接收任何POST参数。不仅缺少值,post中也没有定义参数。URL是有效的。表单、Ajax JS文件和mail.php脚本都在同一个域中 我已经尝试过定义var参数的各种变化,如其他几个堆栈溢出内

我正在调试别人编写的代码——我也是Ajax和JS的新手。下面显示的代码使用Ajax原型JavaScript框架1.6.0.1版提交一个简单的联系表单,并使用响应更新页面。它与IE8完美配合,但与Firefox配合失败。我已将故障追溯到post参数。当Firefox作为浏览器时,目标文件mail.php未接收任何POST参数。不仅缺少值,post中也没有定义参数。URL是有效的。表单、Ajax JS文件和mail.php脚本都在同一个域中

我已经尝试过定义var参数的各种变化,如其他几个堆栈溢出内联帖子、不同的赋值方法等所示。所有这些都产生了与下面代码相同的结果

有什么不对劲的线索吗

FF results
Please try again. responseText='', url='http://domain.com/builder/mail.php', 
form_name='dom', form_message='testing', form_email='dom@domain.com', 
form_to='info@domain.com'

IE8 results
Message Sent!

JS function
function sendForm(F)
{
    $("contact_form").hide();
    $("ajax-loader").show();

    var url = site_url+'mail.php';

    var form_message = escape($("message").value);
    var form_name = escape($("name").value);
    var form_address = escape($("address").value);
    var form_phone = escape($("phone").value);
    var form_email = escape($("email").value);
    var form_how_learn = escape($("how_learn").value);
    var form_to = escape($("to").value);

    var params = {message: form_message, 
                name: form_name, 
                address: form_address, 
                phone: form_phone, 
                email: form_email, 
                how_learn: form_how_learn,
                to: form_to};

    var ajax = new Ajax.Updater(
        'contact_form',
        url, 
        {
            method: 'post',
            parameters: params,
            onComplete: function (response) 
            {
                $("ajax-loader").hide();
                if (response.responseText == "ok")
                {
                    $("contact_form").innerHTML = "<p style=\"color:green;\">Message Sent!</p>";
                    $("contact_form").show();
                }
                else
                {
                    // Debug code added
                    $("contact_form").innerHTML = "<p style=\"color:red;\">Please try again."+
                        " responseText='"+response.responseText+"',"+
                        " url='"+url+"',"+
                        " form_name='"+form_name+"',"+
                        " form_message='"+form_message+"',"+
                        " form_email='"+form_email+"',"+
                        " form_to='"+form_to+"'"+
                        "</p>";
                    $("contact_form").show();
                }
            },
            onFailure: function ()
            {
                $("ajax-loader").hide();
                $("contact_form").innerHTML = "<p style=\"color:red;\">Please try again.</p>";
                $("contact_form").show();
            }
        }
    );
    return false;
}

您的代码在my Firefox中运行良好,并发送一个设置了所有参数的有效POST请求。我只改变了一件事:您不应该自己逃避参数值,Prototype将为您处理它。@JulianD,有趣的是-我总是喜欢更简单的代码。我尝试从参数值周围删除escape。没有解决我的问题,但它确实给了我进一步探索的想法。谢谢。你的代码在我的Firefox中运行良好,并发送一个设置了所有参数的有效POST请求。我只改变了一件事:您不应该自己逃避参数值,Prototype将为您处理它。@JulianD,有趣的是-我总是喜欢更简单的代码。我尝试从参数值周围删除escape。没有解决我的问题,但它确实给了我进一步探索的想法。谢谢