Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将表单脚本从jquery 1.4转换为1.9_Javascript_Jquery - Fatal编程技术网

Javascript 将表单脚本从jquery 1.4转换为1.9

Javascript 将表单脚本从jquery 1.4转换为1.9,javascript,jquery,Javascript,Jquery,我想转换我找到的脚本。。。但我不能。它与jQuery1.5配合使用。 但它不再适用于jQuery1.6 然而,我尝试了jquery—将较旧的jquery代码迁移到jquery 1.9+。 但是没有结果 剧本: $.post('', form.serialize(), function(msg) { submitFlag = false; overlay.hide(); $('span.errorIcon').remove(); if

我想转换我找到的脚本。。。但我不能。它与jQuery1.5配合使用。 但它不再适用于jQuery1.6

然而,我尝试了jquery—将较旧的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');

有两个主要方面可以阻止JQuery的向后兼容性:

$document不再与$document相同,它是一个空的jQuery对象 jQuery将只解析有效的JSON,而不是看起来像JSON但在技术上无效的东西 因此,请检查您的JSON是否有效


来源:

你能给我们一个JSFIDLE吗?不幸的是,这是不可能的。该脚本可与其他PHP文件一起使用。我做本地测试。谢谢你的帮助!。appendTo在最新的jQuery中仍然有效,为什么要替换它呢?我以为问题就在那里。经过一些修改后,我的脚本可以正常工作,但这部分脚本允许我在表单中出现错误时显示帮助图标。它与jQuery1.4一起工作。。。我不明白为什么!在Ajax调用中添加一个错误处理程序,看看它是否被触发
    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().'"}');
    }

}