我正在尝试使用jQuery Ajax从php页面获得响应。一切正常,直到我试图爆炸一个数组并将它们组合起来以获得时间09:00
。
控制台说,Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: 00
并且没有显示任何内容。
我的代码是,
$starttimeArr= explode(",",$comma_separated_starttime);// explodes 09,00,00
$endtimeArr= explode(",",$comma_separated_endtime);// explodes 17,00,00
echo $starttime= $starttimeArr[0].":".$starttimeArr[1];// combine to get 09:00. The line pop up the error
$endtime= $endtimeArr[0].":".$endtimeArr[1];// combines to get 17:00
我是如何克服这个错误的?任何帮助将不胜感激。
我的Ajax代码是
jQuery("#_dob").change(function() {
jQuery.ajax({
url: "<?php echo $this->getUrl('deliverybydatepro/index/index') ?>",
data: "checkIn="+jQuery(this).val()+"&type=calendar",
type: "GET",
dataType: "html",
success: function(data) {
var $response=jQuery(data);
jQuery("#div1").html(data);
}
});
});
响应页面的下拉列表中包含选项"09:00"
。 jQuery-1.8.0
会触发错误。
答案 0 :(得分:5)
好。看过使用JS代码编辑的问题后,问题很明显:
var $response=jQuery(data);
此行是错误的原因。
data
变量是来自AJAX请求的响应字符串。这包含字符串“09:00”,如预期的那样。
这意味着您的代码等同于调用jQuery('09:00')
。
jQuery将尝试将其解释为CSS选择器。它将看到09
并尝试查找具有该名称的元素。它当然不会找到一个,但它不会抱怨。然而,它会看到:00
并假设它是一个伪选择器(如:before
或:first-child
等)。当然:00
不是有效的伪选择器,jQuery会抱怨这一点。所以这就是错误的来源。
那该怎么办呢?那么答案很简单,真的。
您正在使用此行设置名为$response
的变量,但之后您永远不会使用该变量;你继续使用data
变量。所以真正抛出错误的整条线是完全没必要的。如果您的PHP输出JSON或XML数据,您可能需要这样的行,但如果它是纯字符串则不需要。
因此,解决方案是完全删除该行。
希望有所帮助。
顺便说一下,为了帮助你下次,通过在浏览器中使用调试器,可以很容易地找出导致问题的JS代码行。只需打开Dev Tools或Firebug,然后运行代码,它就会停止并向您显示错误的确切位置。调试器查看变量的一些进一步工作,可能已经清楚问题是什么。
答案 1 :(得分:1)
php-answer是对的,它将文本'09:00'发送到javascript,但jQuery抛出错误:“Uncaught Error:语法错误,无法识别的表达式:unsupported pseudo:00”,可能使用ajax-answer作为元素的决定因素,也许是其他因素。显示你的js-code,因为它会抛出错误
答案 2 :(得分:1)
jQuery(data)被视为具有伪选择器'09:00'的元素的定义,并且说:00 - 不支持伪,因为存在伪选择器:first-child,hover,active和等等 在这个字符串中:
var $response=jQuery(data);
jQuery("#div1").html(data);
the string "var $response=jQuery(data);
不需要,没有这个字符串脚本就行了。