Javascript Firefox未传输Ajax.Updater POST参数
我正在调试别人编写的代码——我也是Ajax和JS的新手。下面显示的代码使用Ajax原型JavaScript框架1.6.0.1版提交一个简单的联系表单,并使用响应更新页面。它与IE8完美配合,但与Firefox配合失败。我已将故障追溯到post参数。当Firefox作为浏览器时,目标文件mail.php未接收任何POST参数。不仅缺少值,post中也没有定义参数。URL是有效的。表单、Ajax JS文件和mail.php脚本都在同一个域中 我已经尝试过定义var参数的各种变化,如其他几个堆栈溢出内联帖子、不同的赋值方法等所示。所有这些都产生了与下面代码相同的结果 有什么不对劲的线索吗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参数的各种变化,如其他几个堆栈溢出内
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。没有解决我的问题,但它确实给了我进一步探索的想法。谢谢