如何从ajax javascript客户端正确调用我的rest api

时间:2016-01-29 05:58:28

标签: javascript jquery ajax rest

我有一个REST API,我想从我的ajax javascript客户端调用它。

我拨打电话,没有任何事情发生。我的手机浏览器只显示“忙碌”。

不会返回错误。

这是我背后的代码:

[HttpPost]
[Route("Services/Image/Validate")]
public byte Validate(string KeyCode)
{
    return 1;
}

这是我的JavaScript客户端:

$("#btnValidate").click(function () {
    try {            
        var url = "http://MY_DOMAIN_NAME/api/Services/Image/Validate";
        $.ajax({
            type: 'POST',
            url: url,
            data: '{ "KeyCode" : "' + $("#KeyCode").val() + '" }',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (msg) {
                $('#divStep1').hide();
                $('#divStep2').show();
            },
            fail: function (a) {
                $("#error").html(objRequest);
            }
        });
    }
    catch (ex)
    {
        $("#error").html(ex);
    }
    return false;
});

2 个答案:

答案 0 :(得分:-1)

catch函数仅在HTTP请求失败时抛出错误。为了知道服务器端代码出错,您需要在ajax请求中使用error函数,

您还提到浏览器不执行任何操作,这可能由于

而发生
  1. jQuery插件未包含在页面中(检查$ is not defined的控制台)
  2. 在javascript
  3. 上方添加jquery插件
  4. 如果您的服务器端代码位于其他域,则启用CORS

    $("#btnValidate").click(function () {       
     var url = "http://MY_DOMAIN_NAME/api/Services/Image/Validate";
     $.ajax({
         type: 'POST',
         url: url,
         data: '{ "KeyCode" : "' + $("#KeyCode").val() + '" }',
         contentType: 'application/json; charset=utf-8',
         dataType: 'json',
         success: function (msg) {
             $('#divStep1').hide();
             $('#divStep2').show();
         },
         error: function (e) {
             console.log(e.responseText); //Acutal error
             console.log(e); //Get the entire error details
         }
     });
    });
    

答案 1 :(得分:-1)

您要发送给$.Ajax()的设置对象不期望fail参数。也许你混淆了承诺?

无论如何,它应该是error 例如。

$("#btnValidate").click(function () {
    try {            
        var url = "http://MY_DOMAIN_NAME/api/Services/Image/Validate";
        $.ajax({
            type: 'POST',
            url: url,
            data: '{ "KeyCode" : "' + $("#KeyCode").val() + '" }',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (msg) {
                $('#divStep1').hide();
                $('#divStep2').show();
            },
            error: function ( jqXHR, textStatus, errorThrown) {
                $("#error").html(textStatus);
            }
        });
    }
    catch (ex)
    {
        $("#error").html(ex);
    }
    return false;
});

另外,我不确定你是否应该将data属性作为字符串,但也许这就是你想要的。

所有相关文档均为HERE