0

我有一个对 WebAPI 方法的 ajax 调用,如下所示:

function GetGroupDetails(Id, StudentType, GrpID) {
    var result = "";
    $.ajax({
        url: GetGrpDetails + Id + "&studenttype=" + StudentType + "&GrpId=" + GrpID, dataType: 'json',
        success: function (data) { if (data != null && data != "") { result = data; } },
        error: function (XHR, textStatus, errorThrown) { alert(textStatus + ":" + errorThrown); }
    });
    return result;
}

这是转到 WebAPI 的 URL

/api/Students/GetGroups?Id=107&studenttype="Captain"&GrpId=88

在调试过程中,如果 StudentType = "Captain" 中的值是 "\"Captain\""。现在在调试器中,如果我用“Captain”替换它,它工作正常。

实际的 WebApi 是对 EF 上下文对象的简单 LINQ 查询,如果字符串符合预期,则返回有效值,否则返回 null。

那么,如何根据需要获取字符串。

问候。

4

2 回答 2

1

您正在查看 VS 调试器中的值。字符串的实际值为"Captain". 我认为字符串的正确值应该Captain没有任何双引号。所以修复你的客户端 AJAX 调用。

请求应如下所示:

/api/Students/GetGroups?Id=107&studenttype=Captain&GrpId=88

所以基本上是你的StudentTypejavascript变量需要修复。另外,我建议您传递这样的参数以确保正确编码:

function GetGroupDetails(id, studentType, grpID) {
    $.ajax({
        url: GetGrpDetails,
        data: { id: id, studentType: studentType, grpId: grpID },
        success: function (data) {  
            if (data != null && data != "") { 
                // Do something with the data here but do not attempt to assign
                // it to some external variable that you will be returning
            } 
        },
        error: function (XHR, textStatus, errorThrown) { 
            alert(textStatus + ":" + errorThrown); 
        }
    });
}

关于您的代码的另一个说明是从GetGroupDetails函数返回一个值。您正在进行 AJAX 调用,并在成功回调中为从函数返回的结果变量赋值。这显然是行不通的,因为 AJAX 是异步的,当成功回调执行时,该函数早就运行完毕了。所以永远不要试图从 AJAX 调用中返回任何值。在里面使用它。

于 2013-09-23T06:19:16.843 回答
0

删除 url 中的引号,您的请求 url 不应该有它。尝试这个

/api/Students/GetGroups?Id=107&studenttype=Captain&GrpId=88

并且您编写的函数将永远不会返回“”以外的任何值,请尝试在successajax 调用的方法中调用所需的函数,您将获得响应。

希望这可以帮助。

于 2013-09-23T06:25:51.333 回答