使用$.extend多层扩展JSON对象遇语法错误的问题排查
问题解决:jQuery.extend扩展多层对象的语法错误
错误原因及修正点:
- 初始值类型错误:你将
query初始化为字符串'{}',但$.extend需要操作JavaScript对象而非JSON字符串。应改为var sQuery = {};,否则后续扩展会把字符串当作对象处理,导致结果异常。 - 核心语法错误:
if块中调用$.extend时,第二个参数未用大括号{}包裹,不符合对象字面量语法。JS解析器会因此判定参数列表不完整,抛出missing ) after argument list错误。必须把整个query结构放在大括号内。 - 变量引用错误:你把变量
d.search.value写成了字符串"d.search.value",这样只会将字符串作为查询值,而非引用变量的实际内容,需去掉引号直接使用变量。
修正后的完整代码:
data : function ( d ) { var sQuery = {}; // 初始化为空对象 sQuery = $.extend(sQuery,{size: d.length}); sQuery = $.extend(sQuery,{from: d.start}); if ( d.search.value ) { sQuery = $.extend(sQuery, { "query" : { "query_string" : { "fields" : ["name", "description"], "query" : d.search.value, "tie_breaker" : 0 } } }); console.log(sQuery); }; return JSON.stringify(sQuery); },
内容的提问来源于stack exchange,提问作者Reddy SK
相关产品推荐
相关产品推荐

