0

我正在尝试使用 jQuery Ajax 从 php 页面获取响应。一切正常,直到我尝试分解一个数组并将它的元素组合起来得到一个 time 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触发它的错误。

4

3 回答 3

5

好的。用 JS 代码看过编辑过的问题后,问题就很清楚了:

var $response=jQuery(data);

此行是错误的原因。

data变量是来自 AJAX 请求的响应字符串。正如预期的那样,它包含字符串“09:00”。

这意味着您的代码相当于调用jQuery('09:00').

jQuery 将尝试将其解释为 CSS 选择器。它将看到09并尝试查找具有该名称的元素。它当然不会找到一个,但它不会抱怨。然而,它会看到:00并假设它是一个伪选择器(如:beforeor:first-child等​​)。当然:00不是一个有效的伪选择器,jQuery 会抱怨这一点。所以这就是错误的来源。

那么该怎么办呢?答案很简单,真的。

您正在使用这一行来设置一个名为 的变量$response,但是您永远不会使用该变量;您将继续使用该data变量。所以实际上抛出错误的整个行是完全没有必要的。如果您的 PHP 正在输出 JSON 或 XML 数据,您可能需要这样的行,但如果它是纯字符串则不需要。

所以解决方案是完全删除该行。

希望有帮助。

顺便说一句,为了下次帮助您,使用浏览器中的调试器很容易找出导致问题的 JS 代码行。只需打开 Dev Tools 或 Firebug,然后运行代码,它就会停止并准确显示错误所在的位置。对调试器进行一些进一步的工作,查看变量,很可能会清楚问题出在哪里。

于 2013-02-04T08:55:16.300 回答
1

php-answer 是正确的,它将文本 '09:00' 发送到 javascript ,但 jQuery 抛出错误:“Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: 00”,也许 ajax-answer 被用作行列式元素的,也许是其他的。显示您的 js 代码,因为它会引发错误

于 2013-02-01T15:22:51.680 回答
1

jQuery(data) 被视为具有伪选择器 '09:00' 的元素的定义,并说 :00 - 不支持的伪,因为存在伪选择器:first-child、hover、active 等。在这个字符串:

var $response=jQuery(data);
jQuery("#div1").html(data);
the string "var $response=jQuery(data);

不需要,没有这个字符串脚本就可以工作。

于 2013-02-04T11:43:00.957 回答