Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery/Handlebar错误消息-未捕获类型错误:对象[Object Object]没有方法';匹配';_Javascript_Jquery_Mysql_Ajax_Handlebars.js - Fatal编程技术网

Javascript Jquery/Handlebar错误消息-未捕获类型错误:对象[Object Object]没有方法';匹配';

Javascript Jquery/Handlebar错误消息-未捕获类型错误:对象[Object Object]没有方法';匹配';,javascript,jquery,mysql,ajax,handlebars.js,Javascript,Jquery,Mysql,Ajax,Handlebars.js,我正在做一个小的学习项目,遇到了一个我无法解决的问题 我在google chromes开发控制台上收到以下错误消息:- Uncaught TypeError: Object [object Object] has no method 'match' lexer.nexthandlebars-1.0.0.beta.6.js:364 lexhandlebars-1.0.0.beta.6.js:392 lexhandlebars-1.0.0.beta.6.js:214 parsehandlebars-

我正在做一个小的学习项目,遇到了一个我无法解决的问题

我在google chromes开发控制台上收到以下错误消息:-

Uncaught TypeError: Object [object Object] has no method 'match'
lexer.nexthandlebars-1.0.0.beta.6.js:364
lexhandlebars-1.0.0.beta.6.js:392
lexhandlebars-1.0.0.beta.6.js:214
parsehandlebars-1.0.0.beta.6.js:227
Handlebars.parsehandlebars-1.0.0.beta.6.js:507
compilehandlebars-1.0.0.beta.6.js:1472
(anonymous function)handlebars-1.0.0.beta.6.js:1481
(anonymous function)scripts.js:103
jQuery.Callbacks.firejquery.js:1046
jQuery.Callbacks.self.fireWithjquery.js:1164
donejquery.js:7399
jQuery.ajaxTransport.send.callback
现在,这显示在一个错误与以下代码在车把纸条

match = this._input.match(this.rules[rules[i]]);
Uncaught TypeError: Object [object Object] has no method 'match'
所以我从中得到的是,我的代码肯定有问题,而不是把手代码,即使它是在测试版

下面是启动这一切的代码部分

displayJobInfo: function( e ) {
    var self = Actors;

    self.config.jobInfo.slideUp( 300 );
    var jobnum = $(this).data( 'job_id' );
    $.ajax({
        data: { job_id: jobnum }

    }).then(function( results ) {
        self.config.jobInfo.html( self.config.JobInfoTemplate( { jobs: results, job_id: jobnum }) ).slideDown(300);
    });
    console.log($(this).data( 'job_id' ));
    e.preventDefault();
}
我自己花了几个小时试图解决这个问题,并且在我的网站的另一部分中得到了几乎相同的代码

一点背景知识-我使用php从mysql中提取数据库,然后根据as用户输入查询数据库,并使用jquery将字段覆盖回页面。

仅应用于字符串。您必须将其应用于输入的值。 如果它是jQuery对象,可以使用
\u input.val()
,否则
\u input.value
应该可以工作

另一方面,由于它是库的一部分,您可能需要检查输入的数据类型以及实际发送的数据类型


例如,
null
是javascript中的一个对象,因此如果库不处理它,您可能希望将其更改为空字符串。

如果您将模板作为text/html获取,则您的模板可能是htmlDocument。如果按如下方式初始化模板,那么它将正常工作

function getTemplate(templateName,context, callback, errorCallback) {
var template = {};
template.name = templateName;
$.ajax({
    url: templateName,
    timeout: 1000,
    datatype: "text/javascript",
    error: function(jqXHR, textStatus, errorThrown) {
        errorCallback && errorCallback.call(context, textStatus);
    },
    success:function(response, textStatus, jqXHR) {
        try {
            template['handlebar'] = Handlebars.compile(jqXHR.responseText);
        } catch(e) {
            console.error("error while creating Handlebars script out of template for [", template, e);
            throw e;
        }
        template['rawTemplate'] = jqXHR.responseText;
        callback && callback.call(context, template);
        return response;
    }
});
}


如果使用response参数而不是jqHXR.responseText,则将无法找到“匹配项”。我已经试过了。

如果您试图从jquery元素对象而不是字符串编译模板,就会发生这种情况。比如说

<script id="my-template-script" type="text/template">...</script>
你可能期望它马上爆炸,但事实并非如此。应该是这样

var my_template = Handlebars.compile( $("#my-template-script").html() );

match语句是handlebars源代码的一部分,因此我不认为问题在于此。-我使用differant veriable时得到了几乎相同的代码,所以我知道它确实有效。我已经检查了我能想到的一切,找到了解决办法。我在下面的语句JobInfoTemplate中省略了.html():$(“#job_info_template”).html()。我遇到了同样的问题,您的回答为我解决了这个问题。为了子孙后代,你应该提交它作为这个问题的答案,然后接受它。:)奇怪的是,当我开始使用类似的代码时,从“response”参数编译很好。。。然后它就开始失败了。切换到jqXHR.responseText成功了。谢谢
var my_template = Handlebars.compile( $("#my-template-script").html() );