2

我有以下代码可以在单独的 functions.js 文件中调用 json Web 服务。

function getMajorGroups(){

var element = $(".item-group-button");

$.ajax({
    type:"GET",
    url:"localhost:6458/posApplication/getAllMajorGroups",
    data:"{}",
    contentType:"application/json; charset=utf-8",
    dataType:"json",
    done:successResult(majorGroups),
    fail:errorResult(error)
});
}

function successResult(majorGroups){
    var mGroups = response.d;
    $("#item-groups").empty();

    $.each(majorGroups ,function(){
        var h3 = $('h3').append(majorGroups.code);
        element.append(h3);
        $("#item-groups").prepend(element);
    });
}

function errorResult(error){
    alert("error");
}

当我运行网页并使用 firebug 跟踪步骤时,我可以看到脚本已执行。但它不会在 ajax 调用中执行成功或失败代码。我在这里做错什么了吗?

下面是服务返回的字符串示例。

{"majorGroups":[{"update":"false","hasMore":"false","status":"A","description":"Beverage","majorGroupId":"48","code" :"Beverage"},{"update":"false","hasMore":"false","status":"A","description":"Laundry","majorGroupId":"51","code" :"洗衣店"},{"update":"false","hasMore":"false","status":"A","description":"Cigarette","majorGroupId":"50","code" :"Cigarette"},{"update":"false","hasMore":"false","status":"A","description":"Food","majorGroupId":"47","code":"Food"},{"update":"false","hasMore":"false","status":"A","description": "健康中心","majorGroupId":"52","code":"健康中心"}],"failure":"false"}

4

1 回答 1

2

$.ajax没有名为 的属性failoureerror应该使用所以它看起来像error: errorResult

除了检查请求是通过 Chrome 开发工具或一些类似工具中的网络选项卡发出的。检查原始响应中的内容并确保这是您想要的。如果请求失败,您将看到方法或至少有错误代码。

如果到目前为止一切都很好,那么请确保在 DOM 准备好时添加 DOM 元素,所以用$(function(){ /* your stuff here */ })

编辑:

这不是方法donefail应该使用。jQuery ajax 调用返回承诺。

$.ajax({
  url : "..."
  /* omitted */
}).done(successCallback).fail(failCallback)

其中 successCallback 可以是函数名称,如您定义的 succes 函数,也可以是匿名函数,如

.done(function(response){
  // do stuff with response
} 

我认为你应该仔细阅读 jQuery 文档。

你的$.each电话也有点坏了——你跳过了提供给的函数中的参数$.each

于 2013-04-16T09:12:56.397 回答