使用jQuery中的getScript()在FireFox中报告的Javascript错误“XML不能是整个程序”

时间:2012-08-06 16:40:48

标签: php javascript jquery firefox getscript

我在浏览器上报告javaScript错误时遇到问题。虽然页面功能齐全,但我不喜欢javaScript错误,因为它对用户来说很糟糕。

我在FF中遇到的错误是:

Error: SyntaxError: missing } in XML expression
Source File: http://localhost/resources/adagiotips.php
Line: 14, Column: 4
Source Code:
 }); 

我在jQuery中使用getScript()函数来定位一个php页面,该页面呈现包含javascript和html的代码。然后我使用此页面的输出来填充div的内部html。这就是我在第1页上的内容:

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

        jQuery.getScript('/includes/showmehow_videolist.php?sort=recent&type=desc', function(output){
            jQuery("#apple").html(output);
        });

    });
</script>

<div id="apple">content will populate here</div>

在“showmehow_videolist.php”上我有一个php while循环,它写了一个jQuery函数列表和一些html。代码看起来像这样:

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

<?PHP
$result4 = mysql_query("SELECT * FROM videos")or die(mysql_error());
while($row4 = mysql_fetch_array($result4)){
?>

        jQuery("#video_<?=$row4['vid_id']?>").fancybox({
            'width'             : <?=$new_width_parsed?>,
            'height'            : <?=$new_height_parsed?>,
            'autoScale'         : false,
            'transitionIn'      : 'elastic',
            'transitionOut'     : 'none',
            'type'              : 'iframe',
            'scrolling'         : 'no',
            'overlayColor'      : '#000',
            'overlayOpacity'    : 0.6
        });


    <?
    }//end while 
    ?>
}); //end document.ready function 


</script>


<div>some content</div>

当我从第2页删除javascript部分时,我在FF中遇到了另一个错误:

Error: SyntaxError: XML can't be the whole program
Source File: http://localhost/resources/adagiotips.php
Line: 1136, Column: 6
Source Code:
</div>

有什么想法吗?问题是因为我用javascript来填充div的innerhtml ...来自javascript?就像我说的,一切正常,只是理解为什么浏览器告诉我有错误。

非常感谢任何帮助,谢谢。

/includes/showmehow_videolist.php的输出:

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


        jQuery("#video_82").fancybox({
            'width'             : 782,
            'height'            : 720,
            'autoScale'         : false,
            'transitionIn'      : 'elastic',
            'transitionOut'     : 'none',
            'type'              : 'iframe',
            'scrolling'         : 'no',
            'overlayColor'      : '#000',
            'overlayOpacity'    : 0.6
        });



        jQuery("#video_83").fancybox({
            'width'             : 782,
            'height'            : 720,
            'autoScale'         : false,
            'transitionIn'      : 'elastic',
            'transitionOut'     : 'none',
            'type'              : 'iframe',
            'scrolling'         : 'no',
            'overlayColor'      : '#000',
            'overlayOpacity'    : 0.6
        });



        jQuery("#video_84").fancybox({
            'width'             : 782,
            'height'            : 720,
            'autoScale'         : false,
            'transitionIn'      : 'elastic',
            'transitionOut'     : 'none',
            'type'              : 'iframe',
            'scrolling'         : 'no',
            'overlayColor'      : '#000',
            'overlayOpacity'    : 0.6
        });




    }); //end document.ready function 


</script>


<div style="overflow-x:hidden; overflow-y: auto; height:350px; width:725px;" id="main_div_of_video_links">







        <div class="tab1">
            <div class="tab2">
                <span class="h2_standard">5</span> <span class="sm">views</span>
            </div>
            <div class="tab3">
                 <img src="/images/icon_video_sm.gif" alt="History - Show Me How Video!" /> <a id="video_181" href="../video_pop.php?id=181" class="newAStyle">Adagio OrderEntry History</a> 

                 <!--<img src="/images/flame_sm.png" />--> <img src="/images/new_icon.png" />       


            </div>
            <div class="tab4">
                <span class="sm"><em>Added: </em>Jul 23 2012</span>
            </div>

            <div style="clear:both"></div>
        </div>







        <div class="tab1">
            <div class="tab2">
                <span class="h2_standard">5</span> <span class="sm">views</span>
            </div>
            <div class="tab3">
                 <img src="/images/icon_video_sm.gif" alt="Alternate Price Lists - Show Me How Video!" /> <a id="video_165" href="../video_pop.php?id=165" class="newAStyle">Adagio Inventory Alternate Price Lists</a> 

                 <!--<img src="/images/flame_sm.png" />--> <img src="/images/new_icon.png" />       


            </div>
            <div class="tab4">
                <span class="sm"><em>Added: </em>Jul 13 2012</span>
            </div>

            <div style="clear:both"></div>
        </div>







        <div class="tab1">
            <div class="tab2">
                <span class="h2_standard">1</span> <span class="sm">views</span>
            </div>
            <div class="tab3">
                 <img src="/images/icon_video_sm.gif" alt="Special Prices - Show Me How Video!" /> <a id="video_166" href="../video_pop.php?id=166" class="newAStyle">Adagio OrderEntry Special Prices</a> 

                 <!--<img src="/images/flame_sm.png" />--> <img src="/images/new_icon.png" />       


            </div>
            <div class="tab4">
                <span class="sm"><em>Added: </em>Jul 13 2012</span>
            </div>

            <div style="clear:both"></div>
        </div>






</div>

2 个答案:

答案 0 :(得分:0)

尝试以下更改:

  1. 在第1页中,删除行jQuery("#apple").html(output);。您不需要将返回的脚本嵌入到div中。来自page2的脚本将由jQuery解析和运行,而无需将其嵌入到page1
  2. 首先尝试以上操作,如果这不能解决问题,请执行第二步:

    1. 在第2页中,删除以下行:

      &LT; script type =“text / java script”&gt;     jQuery的(文件)。就绪(函数(){} &LT; /脚本&GT;

    2. 这是因为,使用jQuery.getScript获取的JS已经在jQuery.ready()fn的上下文中运行,所以不应该需要在第2页中包装你的javascript,它再次..

答案 1 :(得分:0)

我知道了,结果是使用getScript和html()不是要走的路,而是我应该使用load()函数:

jQuery('#apple').load('/includes/showmehow_videolist.php?sort=recent&type=desc');   

没有错误;)