我在下面有这个js和qunit测试。为什么浏览器给我的listClasses没有定义?如何解决。我看到大部分

function ajax() {
$.ajax({
});}

但是,如果我喜欢下面的测试方法?
$('#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] + "&regNo=" + [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] + "&regNo=" + [json_results.rows[key].regNo] +
                   "' rel='external'>RATE THIS COURSE</a></li>" ;
            listItems.append(html);
        });

        $('#list ul').listview();
    },
});
});

这是qunit测试
 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(){ ...使用不正确。

该函数要么需要匿名(即删除listClasses位),否则运行listClasses()将会失败。

您需要做的是外部化函数声明。

即:

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] + "&regNo=" + [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] + "&regNo=" + [json_results.rows[key].regNo] +
                   "' rel='external'>RATE THIS COURSE</a></li>" ;
            listItems.append(html);
        });

        $('#list ul').listview();
    }
});
}

然后从on命令调用该函数:
$('#MregisteredClasses').on('pageinit', listClasses)

假设您的脚本仅在listClasses()上失败,那么我认为listClasses名称只是默默删除。

09-30 16:12
查看更多