我想转换我发现的脚本......但我不能。它适用于 Jquery 1.5 。 但它不再适用于 Jquery 1.6 。
然而我尝试了jquery -migrate(将旧的jQuery代码迁移到jQuery 1.9+)。 但没有结果......
剧本:
$.post('', form.serialize(), function(msg) {
submitFlag = false;
overlay.hide();
$('span.errorIcon').remove();
if (msg.success) {
$('#formContainer, #mdiv, #contactboxfloat').fadeOut(function() {
form.get(0).reset();
$('#thankYou').fadeIn();
});
} else {
$.each(msg, function(k, v) {
var errorIcon = $('<span>', {
className: 'errorIcon'
});
var errorTip = $('<span>', {
className: 'errorTip',
text: v
}).hide().appendTo(errorIcon);
errorIcon.hover(function() {
errorTip.stop().fadeIn(function() {
errorTip.css('opacity', 1);
});
}, function() {
errorTip.stop().fadeOut('slow', function() {
errorTip.hide().css('opacity', 1);
});
});
form.find('[name=' + k + ']').closest('.formRow').append(errorIcon);
if ($(window).width() - errorIcon.offset().left > 240) {
errorTip.css('left', 30);
} else {
errorTip.css('right', 30);
}
});
}
}, 'json');
php json
if (!function_exists('json_encode'))
{
function json_encode($a=false)
{
if (is_null($a)) return 'null';
if ($a === false) return 'false';
if ($a === true) return 'true';
if (is_scalar($a))
{
if (is_float($a))
{
// Always use "." for floats.
return floatval(str_replace(",", ".", strval($a)));
}
if (is_string($a))
{
static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
}
else return $a;
}
$isList = true;
for ($i = 0, reset($a); $i < count($a); $i++, next($a))
{
if (key($a) !== $i)
{
$isList = false;
break;
}
}
$result = array();
if ($isList)
{
foreach ($a as $v) $result[] = json_encode($v);
return '[' . join(',', $result) . ']';
}
else
{
foreach ($a as $k => $v) $result[] = json_encode($k).':'.json_encode($v);
return '{' . join(',', $result) . '}';
}
}
}
有人可以向我解释是什么阻止了脚本的工作吗?
和
if($_SERVER['REQUEST_METHOD'] == 'POST'){
try{
$contactForm->validate();
$contactForm->send();
$thankYou = $config['thankYouMessage'];
if(IS_AJAX){
echo json_encode(array('success'=>1));
exit;
}
}
catch(FormValidateException $e){
if(IS_AJAX){
echo json_encode($e->errors);
exit;
}
else{
$contactForm->populateValuesFromArray($_POST);
}
}
catch(Exception $e){
die('{"exception":"'.$e->getMessage().'"}');
}
}
答案 0 :(得分:0)
有两个主要因素,可以制止JQuery的向后兼容性:
请检查,如果您的JSON有效。