【问题标题】:JQuery JS Uncaught Error: Syntax error, unrecognized expression:JQuery JS 未捕获错误:语法错误,无法识别的表达式:
【发布时间】:2017-11-24 08:38:42
【问题描述】:

所以,我有这个问题一直困扰着我,我似乎无法解决它。出现的错误是这样的:

未捕获的错误:语法错误,无法识别的表达式:[{"type":"header","subtype":"h1","label":"Another test form"},{"type":"checkbox-group ","label":"复选框组","name":"checkbox-group-1497353080484","values":[{"label":"Option 1","value":"option-1","selected ":true}]},{"type":"header","subtype":"h1","label":"Header"},{"type":"number","label":"Number", "className":"form-control","name":"number-1497353081884"},{"type":"text","label":"Text Field","className":"form-control"," name":"text-1497353083345","subtype":"text"}]

我已设法找到导致此问题的代码行,即:

        forms = $(document.getElementById('formData').getAttribute("value")),

现在,我不知道为什么会导致这个问题。进来的内容是正确的。这一切都是在一个 JQuery 函数中完成的,实际上整个 JQuery 函数看起来是这样的:

jQuery(function($) {
		var $fbEditor = $(document.getElementById('fb-editor')),
		$formContainer = $(document.getElementById('fb-rendered-form')),
		forms = $(document.getElementById('formData').getAttribute("value")),
		fbOptions = {
			formData: forms,
			dataType: 'json',
			onSave: function(){
				$fbEditor.toggle();
				$formContainer.toggle();
				$('form', $formContainer).formRender({
					formData: formBuilder.formData
				});
			}
		},
		formBuilder = $fbEditor.formBuilder(fbOptions);
		
		$('.edit-form', $formContainer).click(function() {
			$fbEditor.toggle();
			$formContainer.toggle();
		});
	});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

所以,我对 JavaScript、JQuery 或其他任何方面都没有那么丰富的经验。所以这很可能是一个简单的问题,但我目前无法弄清楚它是什么。其他人可以告诉我哪里出了问题以及如何解决吗?

【问题讨论】:

  • 当你在你的控制台中 document.getElementById('formData')document.getElementById('formData').getAttribute("value") 时返回什么?
  • 从错误看来,问题是因为您试图从 JSON 字符串创建 jQuery 对象。我什至不确定你想用这种逻辑实现什么。
  • getAttribute 返回一个字符串。 jQuery 尝试将其解析为选择器或 HTML 字符串,但失败了。您为什么要尝试将其包装在 jQuery 中?
  • 感谢大家的cmets。现在已经回答了这个问题,是 $() 导致了这个问题。因此,将其解析为 Jquery 是个问题,谢谢大家。

标签: javascript jquery syntax-error


【解决方案1】:

forms = $(document.getElementById('formData').getAttribute("value")),

尝试删除上面代码中的 $()。根据 poohitan,它是一个选择器,但它似乎根本没有做任何事情。

【讨论】:

  • 解决了!非常感谢 Ugotchi!
【解决方案2】:

从错误中我猜document.getElementById('formData').getAttribute("value") 是一个 JSON 字符串。

您已将其包装到 jQuery 对象构造函数 $(...) 中,但它失败了,因为 jQuery 期望参数是选择器(如 .classname)、DOM 元素或其他 jQuery 元素。

【讨论】:

    猜你喜欢
    • 2013-10-10
    • 2017-06-06
    • 2019-02-18
    • 2015-11-13
    • 1970-01-01
    • 2015-10-08
    • 2016-11-15
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多