为什么这个json脚本在IE7& 8,但适用于所有其他浏览器?

时间:2012-04-11 02:55:08

标签: jquery json

我几乎完成了我的网站重建,现在正处于测试阶段。在IE7和8中进行测试时,我发现由于json脚本,我的jquery脚本无法正常工作,即使它们在所有其他浏览器中都有效,包括IE9。

页面为:http://www.carcityofdanbury.com/New/?cat=01&do=View&stock=18481

脚本是信息请求表单,在此行中: ".append("<p>Thank you " + data.name + ",</p><p class=\"indent\">we recieved your info request " + data.for + " on our<br />'.$vehicle.' and will contact you shortly.</p>")"导致jquery选项卡不再起作用。

我做了php和jquery编码,但雇了一个人来做json,所以我不知道如何解决这个问题。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

问题在于data.for,听起来有点像你(编写代码的人)正试图访问其中一个保留名称。即使data.for应该有效,IE也不喜欢它认为特殊的名称(例如类)。 data.class会导致IE出现问题,即使它有效。

尝试将data.for重命名为其他内容data._for。确保更新01/Resources/infoRequest.php PHP文件以返回 new 值。

答案 1 :(得分:1)

解决了......代码中有一个额外的逗号:

        <script language="javascript" type="text/javascript">
        $(document).ready(function() {

        // Tabs
            $("#tabs").tabs();

        // Google map
            $(\'#embed\').gmap3(
                {action: \'addMarker\', lat:41.40372, lng:-73.45844, map:{center: true, zoom: 17, mapTypeId: google.maps.MapTypeId.ROADMAP}}
            );

        // Pic popup
            $("#viewPics").fancybox({
                \'type\': \'iframe\', \'transitionIn\': \'fade\', \'transitionOut\': \'fade\', \'width\': 900, \'height\': 500, \'autoScale\': false, \'scrolling\': \'no\'
            });

        // Form Validation
            jQuery.validator.messages.required = "";
            $("#infoForm").validate({

                invalidHandler: function(e, validator) {
                    var errors = validator.numberOfInvalids();
                    if (errors) {
                        var message = errors == 1
                            ? \'You missed 1 required field.\'
                            : \'You missed \' + errors + \' required fields\';
                        $("li.Error span").html(message);
                        $("li.Error").show();
                    } else {
                        $("li.Error").hide();
                    }
                },

                onkeyup: false,
                submitHandler: function(form) {
                    $.ajax({
                        url: "01/Resources/infoRequest.php",
                        type: "POST",
                        cache:false,
                        data: $("#infoForm").serialize(),
                        dataType: "json",
                        success: function(data) {
                            $("li.Error").hide();
                            $("#contact_form").html(\'<div id="message"></div>\');
                            $("#message").html("<h2>Info Request Submitted!</h2>")
                            .append("<p>Thank you " + data.name + ",</p><p class=\"indent\">we recieved your info request " + data.test + " on our<br />'.$vehicle.' and will contact you shortly.</p>")
                            .hide()
                            .fadeIn(2500, function() {
                                $("#message").append("<p>Would you like to <a href=\"?cat=02&stock='.$stock.'\">prefill an application</a> now?</p>")
                            });
                        }
                    });
                }, <------- This guy was the culprit

            });

        });
    </script>