我正在调试其他人编写的代码 - 我也是Ajax和JS的新手。下面显示的代码使用Ajax(Prototype JavaScript框架,版本1.6.0.1)提交一个简单的联系表单并使用响应更新页面。它与IE8完美配合,并在Firefox中失败。我已经跟踪了post参数的失败。当Firefox是浏览器时,目标文件mail.php没有收到任何POST参数。不只是缺少值 - 在帖子中没有定义参数。该URL有效。表单,Ajax JS文件和mail.php脚本都在同一个域中。
我已尝试过定义var params的变体,如其他几个Stack Overflow帖子(内联,不同的赋值方法等)所示。所有产生的结果与下面的代码相同。
有任何疑问是什么问题?
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;
}