在javascript函数没有定义 [英] function in javascript is not defined
问题描述
我有这个js及以下qunit测试。为什么浏览器给我的listClasses没有定义?如何解决这个问题。我看到大多做
函数阿贾克斯(){
$阿贾克斯({
});}
但是,如果我不喜欢下面怎么做测试?
$('#MregisteredClasses')。在('pageinit',功能listClasses(){
变种rowInput =1;
变种pageInput =1;
$阿贾克斯({
网址:http://137.57.102.146:8080/Training/getRegisteredClassesData.html,
数据:({行:rowInput,页:pageInput}),
键入:POST,
成功:函数(json_results){
$('#列表)追加('< UL数据角色=列表视图数据插入=真正的< / UL>');
listItems中的= $('#名单)发现(UL)。
$每个(json_results.rows,功能(键){
HTML =<李数据迷你='真正的'ID ='图标'>< A HREF =HTTP:?//137.57.102.146:8080 /培训/ MRegisteredClassesDetail.phone courseId =
+ json_results.rows [关键] .courseId] +&放大器; REGNO =+ json_results.rows [关键] .regNo] +
'相对='外部'>中+ json_results.rows [关键] .courseName +< / A>中
+< A HREF =HTTP://137.57.102.146:8080 /培训/ MRateCourse.phone courseId =?
+ json_results.rows [关键] .courseId] +&放大器; REGNO =+ json_results.rows [关键] .regNo] +
'相对='外部'>年率此课程< / A>< /李>中;
listItems.append(HTML);
});
$('#名单UL)的列表视图()。
},
});
});
这是qunit测试
测试(异步测试',函数(){
//暂停的考验,失败,如果开始()一秒钟后不叫
停止();
listClasses(函数(){
// ...异步断言
OK(真实的,成功);
});
的setTimeout(函数(){
开始();
},2000);
});
$('#MregisteredClasses')。在('pageinit',功能listClasses(){...
是不正确的用法。
该函数或者必须是匿名的(即删除 listClasses
位),在这种情况下运行 listClasses()
将失败。
您需要做的是外化的函数声明。
即:
函数listClasses(){
变种rowInput =1;
变种pageInput =1;
$阿贾克斯({
网址:http://137.57.102.146:8080/Training/getRegisteredClassesData.html,
数据:({行:rowInput,页:pageInput}),
键入:POST,
成功:函数(json_results){
$('#列表)追加('< UL数据角色=列表视图数据插入=真正的< / UL>');
listItems中的= $('#名单)发现(UL)。
$每个(json_results.rows,功能(键){
HTML =<李数据迷你='真正的'ID ='图标'>< A HREF =HTTP:?//137.57.102.146:8080 /培训/ MRegisteredClassesDetail.phone courseId =
+ json_results.rows [关键] .courseId] +&放大器; REGNO =+ json_results.rows [关键] .regNo] +
'相对='外部'>中+ json_results.rows [关键] .courseName +< / A>中
+< A HREF =HTTP://137.57.102.146:8080 /培训/ MRateCourse.phone courseId =?
+ json_results.rows [关键] .courseId] +&放大器; REGNO =+ json_results.rows [关键] .regNo] +
'相对='外部'>年率此课程< / A>< /李>中;
listItems.append(HTML);
});
$('#名单UL)的列表视图()。
}
});
}
然后调用从上的功能
命令:
$('#MregisteredClasses')。在('pageinit',listClasses)
假设你的脚本只失败了 listClasses()
,那么我会假设 listClasses
名字只是下降悄无声息。
i have this js and qunit test below. why the browser gave me the listClasses is not defined? How to solve it. I saw mostly did
function ajax() {
$.ajax({
});}
but if i did like below how to do the test?
$('#MregisteredClasses').on('pageinit', function listClasses(){
var rowInput = "1";
var pageInput = "1";
$.ajax({
url: 'http://137.57.102.146:8080/Training/getRegisteredClassesData.html',
data: ( {rows : rowInput , page : pageInput}),
type: 'POST',
success: function(json_results){
$('#list').append('<ul data-role="listview" data-inset="true"</ul>');
listItems = $('#list').find('ul');
$.each(json_results.rows, function(key) {
html = "<li data-mini='true' id='icon'><a href='http://137.57.102.146:8080/Training/MRegisteredClassesDetail.phone?courseId="
+ [json_results.rows[key].courseId] + "®No=" + [json_results.rows[key].regNo] +
"' rel='external'>" + json_results.rows[key].courseName+ "</a>"
+ "<a href='http://137.57.102.146:8080/Training/MRateCourse.phone?courseId="
+ [json_results.rows[key].courseId] + "®No=" + [json_results.rows[key].regNo] +
"' rel='external'>RATE THIS COURSE</a></li>" ;
listItems.append(html);
});
$('#list ul').listview();
},
});
});
and this is qunit test
test('asynchronous test', function() {
// Pause the test, and fail it if start() isn't called after one second
stop();
listClasses(function() {
// ...asynchronous assertions
ok(true, "Success");
});
setTimeout(function() {
start();
}, 2000);
});
$('#MregisteredClasses').on('pageinit', function listClasses(){ ...
is incorrect usage.
The function either needs to be anonymous (i.e. drop the listClasses
bit) in which case running listClasses()
will fail.
What you need to do is externalise the function declaration.
i.e.:
function listClasses(){
var rowInput = "1";
var pageInput = "1";
$.ajax({
url: 'http://137.57.102.146:8080/Training/getRegisteredClassesData.html',
data: ( {rows : rowInput , page : pageInput}),
type: 'POST',
success: function(json_results){
$('#list').append('<ul data-role="listview" data-inset="true"</ul>');
listItems = $('#list').find('ul');
$.each(json_results.rows, function(key) {
html = "<li data-mini='true' id='icon'><a href='http://137.57.102.146:8080/Training/MRegisteredClassesDetail.phone?courseId="
+ [json_results.rows[key].courseId] + "®No=" + [json_results.rows[key].regNo] +
"' rel='external'>" + json_results.rows[key].courseName+ "</a>"
+ "<a href='http://137.57.102.146:8080/Training/MRateCourse.phone?courseId="
+ [json_results.rows[key].courseId] + "®No=" + [json_results.rows[key].regNo] +
"' rel='external'>RATE THIS COURSE</a></li>" ;
listItems.append(html);
});
$('#list ul').listview();
}
});
}
Then call the function from the on
command:
$('#MregisteredClasses').on('pageinit', listClasses)
Assuming your script only failed on listClasses()
, then I would assume that the listClasses
name is just dropped silently.
这篇关于在javascript函数没有定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!