我有一个php函数,可在网站的每个页面上插入一个搜索栏。

该站点检查用户是否已启用JavaScript,是否已插入jQuery ajax内容以链接选择框(而不是使用后备onchange =“ form.submit()”)。

$ .getJSON在IE以外的其他浏览器中都非常适合我,如果我在IE中进行整页刷新(ctrl + F5),则我的ajax可以正常工作,直到通过以下方式导航到新页面(或与$ PHP_SELF相同的页面)为止提交表单或单击链接时,会触发jquery onchange函数,但随后jquery引发错误:

网页错误详细信息

Message: Object doesn't support this property or method

Line: 123

Char: 183

Code: 0

URI: http://~#UNABLE~TO~DISCLOSE#~/jquery-1.4.2.min.js


似乎jquery函数$ .getJSON()不见了???

这似乎是某种缓存问题,因为它在第二页加载时发生,但是我想无论如何我都进行了所有缓存预防,这是广告jquery函数的代码片段:

if (isset($_SESSION['NO_SCRIPT']) == true && $_SESSION['NO_SCRIPT'] == false)
        {
            $html .= '<script type="text/javascript" charset="utf-8">';
            $html .= '$.ajaxSetup({ cache: false });';
            $html .= '$.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) {
                        alert(textStatus);
                        alert(errorThrown);
                        alert(XMLHttpRequest.responseText);
                        }});';
            $html .= '</script>';

            $html .= '<script type="text/javascript" charset="utf-8">';
            $html .= '$(function(){  $("select#searchtype").change(function() { ';
            $html .= 'alert("change fired!"); ';
            $html .= '$.getJSON("ajaxgetcategories.php", {id: $(this).val()}, function(j) { ';
            $html .= 'alert("ajax returned!"); ';
            $html .= 'var options = \'\'; ';
            $html .= 'options += \'<option value="0" >--\' + j[0].all + \'--</option>\'; ';
            $html .= 'for (var i = 0; i < j.length; i++) { options += \'<option value="\' + j[i].id + \'">\' + j[i].name + \'</option>\'; } ';
            $html .= '$("select#searchcategory").html(options); }) }) }) ';
            $html .= '</script> ';

            $html .= '<script type="text/javascript" charset="utf-8"> ';
            $html .= '$(function(){  $("select#searchregion").change(function() { ';
            $html .= 'alert("change fired!"); ';
            $html .= '$.getJSON("ajaxgetcountries.php", {id: $(this).val()}, function(j) { ';
            $html .= 'alert("ajax returned!"); ';
            $html .= 'var options = \'\'; ';
            $html .= 'options += \'<option value="0" >--\' + j[0].all + \'--</option>\'; ';
            $html .= 'for (var i = 0; i < j.length; i++) { options += \'<option value="\' + j[i].id + \'">\' + j[i].name + \'</option>\'; } ';
            $html .= '$("select#searchcountry").html(options); }) }) }) ';
            $html .= '</script> ';
        }; return $html;


记住,这是php函数的一部分,该函数将脚本插入到html中,如果它看起来有些混乱,对不起,我是PHP和Javascript的新手,我也有点凌乱:)

还请记住,这在第一次访问IE时效果很好,但是在进行任何导航后我都收到了错误消息。

最佳答案

好吧,我找到了答案。问题出在IE和每个网页标签中的以下代码行:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


我有我的标签在此行之前声明了jquery,它需要继续。

这一定是IE中的错误。这会导致奇怪的结果吗?

关于php - jQuery $ .getJSON在Internet Explorer中仅工作一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2863996/

10-13 07:58
查看更多