如何修复jQuery AJAX的"不支持的伪"错误?

Vis*_*nku 0 php ajax jquery

我试图从使用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触发错误.

SDC*_*SDC 5

好的.看过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,然后运行代码,它就会停止并向您显示错误的确切位置.调试器查看变量的一些进一步工作,可能已经清楚问题是什么.