我有一个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功能的代码的snipet:
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中完美运行,但在任何导航后我都会收到错误。
答案 0 :(得分:3)
好的,我找到了答案。问题在于IE和每个网页标记中的这行代码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我的标签在此行之前声明了jquery,它需要继续。
这一定是IE中的一个错误。它会导致一个奇怪的结果你不觉得吗?