我有一个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;
});
答案 0 :(得分:-1)
catch函数仅在HTTP请求失败时抛出错误。为了知道服务器端代码出错,您需要在ajax请求中使用error
函数,
您还提到浏览器不执行任何操作,这可能由于
而发生$ is not defined
的控制台)如果您的服务器端代码位于其他域,则启用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