我试图从使用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
Run Code Online (Sandbox Code Playgroud)
我是如何克服这个错误的?任何帮助将不胜感激.
我的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);
}
});
});
Run Code Online (Sandbox Code Playgroud)
响应页面有一个下拉列表,有一个选项"09:00".jQuery-1.8.0触发错误.
好的.看过JS代码编辑后的问题,问题很明显:
var $response=jQuery(data);
Run Code Online (Sandbox Code Playgroud)
此行是错误的原因.
该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,然后运行代码,它就会停止并向您显示错误的确切位置.调试器查看变量的一些进一步工作,可能已经清楚问题是什么.