Javascript Ajax调用无法从web api服务获取返回消息
我正在对提供身份验证例程的webapi服务进行一个简单的ajax调用。 我的问题是ajax调用可以向服务发出请求,但一旦服务返回布尔值,就会出错 我想要什么:Javascript Ajax调用无法从web api服务获取返回消息,javascript,jquery,asp.net,ajax,asp.net-web-api,Javascript,Jquery,Asp.net,Ajax,Asp.net Web Api,我正在对提供身份验证例程的webapi服务进行一个简单的ajax调用。 我的问题是ajax调用可以向服务发出请求,但一旦服务返回布尔值,就会出错 我想要什么: <script type="text/javascript"> $(document).ready(function () { $('#submitButton').click(function () { var name = $(userNameTextBox).val);
<script type="text/javascript">
$(document).ready(function () {
$('#submitButton').click(function () {
var name = $(userNameTextBox).val);
var pass = $(passwordTextBox).val();
if (name.length == 0 || pass.length == 0) {
alert("Please enter your credentials");
}
else {
$.ajax({
url: "http://localhost:50503/api/Authentication/Authenticate",
data: { userName: name, passWord: pass },
cache: false,
type: 'GET',
dataType: 'json',
success: function (msg) {
alert(msg);
},
error: function (msg) {
alert("Error Message: "+msg);
}
});
}//end of else
});
});
</script>
我要做的就是检查返回的布尔值是真是假。如果为true,我想将用户重定向到另一个页面。
谁能帮我一下吗
JQUERY代码:
<script type="text/javascript">
$(document).ready(function () {
$('#submitButton').click(function () {
var name = $(userNameTextBox).val);
var pass = $(passwordTextBox).val();
if (name.length == 0 || pass.length == 0) {
alert("Please enter your credentials");
}
else {
$.ajax({
url: "http://localhost:50503/api/Authentication/Authenticate",
data: { userName: name, passWord: pass },
cache: false,
type: 'GET',
dataType: 'json',
success: function (msg) {
alert(msg);
},
error: function (msg) {
alert("Error Message: "+msg);
}
});
}//end of else
});
});
</script>
您可以尝试用以下方法替换ajax调用:删除
数据类型
:
var request = $.ajax({
url: "http://localhost:50503/api/Authentication/Authenticate",
cache: false,
type: 'POST',
data: { userName: userName, passWord: passWord }
});
request.done(function (msg) {
//check the boolean and redirect user to another page.
if(msg) window.location.href = "http://nextpage.com";
});
我还将方法更改为
POST
。更适合您的情况。您可以尝试用此替换ajax调用,或者删除数据类型:
var request = $.ajax({
url: "http://localhost:50503/api/Authentication/Authenticate",
cache: false,
type: 'POST',
data: { userName: userName, passWord: passWord }
});
request.done(function (msg) {
//check the boolean and redirect user to another page.
if(msg) window.location.href = "http://nextpage.com";
});
我还将方法更改为POST
。更适合您的情况。您可以尝试用此替换ajax调用,或者删除数据类型:
var request = $.ajax({
url: "http://localhost:50503/api/Authentication/Authenticate",
cache: false,
type: 'POST',
data: { userName: userName, passWord: passWord }
});
request.done(function (msg) {
//check the boolean and redirect user to another page.
if(msg) window.location.href = "http://nextpage.com";
});
我还将方法更改为POST
。更适合您的情况。您可以尝试用此替换ajax调用,或者删除数据类型:
var request = $.ajax({
url: "http://localhost:50503/api/Authentication/Authenticate",
cache: false,
type: 'POST',
data: { userName: userName, passWord: passWord }
});
request.done(function (msg) {
//check the boolean and redirect user to another page.
if(msg) window.location.href = "http://nextpage.com";
});
我还将方法更改为POST
。更适合您的情况。如果所有其他操作都失败,请设置一个调试器断点(例如,通过错误回调中指向$.ajax
的指令,并在浏览器的调试器(即Chrome开发工具)中运行代码)。然后,在命中断点后,您应该能够确定(通过遍历堆栈)调用错误回调的原因
我的测试
我已尝试重现您的案例,对我来说,它不会失败。我已用以下方式定义了测试控制器:
using System.Web.Http;
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public bool Authenticate(string username, string password)
{
return username == "user" && password == "pass";
}
}
}
我从JavaScript对其进行AJAX调用,如下所示:
$.ajax({url: 'http://localhost:59900/api/test', type: 'get', dataType: 'json', cache: false, data: { userName: 'user', passWord: 'pass' }}).done(function () {console.log("Success", arguments);}).fail(function () { console.log("Error", arguments); });
AJAX调用调用成功回调(done
),结果为true
,因此根本没有问题
分析器错误
jQuery似乎无法解析从Web API(true
)发送的JSON。若要返回有效的JSON,请从控制器返回以下类型的对象:
public class Result
{
public bool Result { get;set; }
}
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public Result Authenticate(string username, string password)
{
return new Result { Result = username == "user" && password == "pass" };
}
}
}
这将导致以下JSON被发送到您的客户端:
{ "Result": true }
更新控制器:
public class Result
{
public bool Result { get;set; }
}
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public Result Authenticate(string username, string password)
{
return new Result { Result = username == "user" && password == "pass" };
}
}
}
如果所有其他操作都失败,请设置一个调试器断点(例如,通过错误回调中指向$.ajax
的指令),并在浏览器的调试器(即Chrome dev工具)中运行代码。然后,在命中断点后,您应该能够确定(通过遍历堆栈)调用错误回调的原因
我的测试
我已尝试重现您的案例,对我来说,它不会失败。我已用以下方式定义了测试控制器:
using System.Web.Http;
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public bool Authenticate(string username, string password)
{
return username == "user" && password == "pass";
}
}
}
我从JavaScript对其进行AJAX调用,如下所示:
$.ajax({url: 'http://localhost:59900/api/test', type: 'get', dataType: 'json', cache: false, data: { userName: 'user', passWord: 'pass' }}).done(function () {console.log("Success", arguments);}).fail(function () { console.log("Error", arguments); });
AJAX调用调用成功回调(done
),结果为true
,因此根本没有问题
分析器错误
jQuery似乎无法解析从Web API(true
)发送的JSON。若要返回有效的JSON,请从控制器返回以下类型的对象:
public class Result
{
public bool Result { get;set; }
}
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public Result Authenticate(string username, string password)
{
return new Result { Result = username == "user" && password == "pass" };
}
}
}
这将导致以下JSON被发送到您的客户端:
{ "Result": true }
更新控制器:
public class Result
{
public bool Result { get;set; }
}
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public Result Authenticate(string username, string password)
{
return new Result { Result = username == "user" && password == "pass" };
}
}
}
如果所有其他操作都失败,请设置一个调试器断点(例如,通过错误回调中指向$.ajax
的指令),并在浏览器的调试器(即Chrome dev工具)中运行代码。然后,在命中断点后,您应该能够确定(通过遍历堆栈)调用错误回调的原因
我的测试
我已尝试重现您的案例,对我来说,它不会失败。我已用以下方式定义了测试控制器:
using System.Web.Http;
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public bool Authenticate(string username, string password)
{
return username == "user" && password == "pass";
}
}
}
我从JavaScript对其进行AJAX调用,如下所示:
$.ajax({url: 'http://localhost:59900/api/test', type: 'get', dataType: 'json', cache: false, data: { userName: 'user', passWord: 'pass' }}).done(function () {console.log("Success", arguments);}).fail(function () { console.log("Error", arguments); });
AJAX调用调用成功回调(done
),结果为true
,因此根本没有问题
分析器错误
jQuery似乎无法解析从Web API(true
)发送的JSON。若要返回有效的JSON,请从控制器返回以下类型的对象:
public class Result
{
public bool Result { get;set; }
}
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public Result Authenticate(string username, string password)
{
return new Result { Result = username == "user" && password == "pass" };
}
}
}
这将导致以下JSON被发送到您的客户端:
{ "Result": true }
更新控制器:
public class Result
{
public bool Result { get;set; }
}
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public Result Authenticate(string username, string password)
{
return new Result { Result = username == "user" && password == "pass" };
}
}
}
如果所有其他操作都失败,请设置一个调试器断点(例如,通过错误回调中指向$.ajax
的指令),并在浏览器的调试器(即Chrome dev工具)中运行代码。然后,在命中断点后,您应该能够确定(通过遍历堆栈)调用错误回调的原因
我的测试
我已尝试重现您的案例,对我来说,它不会失败。我已用以下方式定义了测试控制器:
using System.Web.Http;
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public bool Authenticate(string username, string password)
{
return username == "user" && password == "pass";
}
}
}
我从JavaScript对其进行AJAX调用,如下所示:
$.ajax({url: 'http://localhost:59900/api/test', type: 'get', dataType: 'json', cache: false, data: { userName: 'user', passWord: 'pass' }}).done(function () {console.log("Success", arguments);}).fail(function () { console.log("Error", arguments); });
AJAX调用调用成功回调(done
),结果为true
,因此根本没有问题
分析器错误
jQuery似乎无法解析从Web API(true
)发送的JSON。若要返回有效的JSON,请从控制器返回以下类型的对象:
public class Result
{
public bool Result { get;set; }
}
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public Result Authenticate(string username, string password)
{
return new Result { Result = username == "user" && password == "pass" };
}
}
}
这将导致以下JSON被发送到您的客户端:
{ "Result": true }
更新控制器:
public class Result
{
public bool Result { get;set; }
}
namespace Test
{
public class TestController : ApiController
{
[HttpGet]
public Result Authenticate(string username, string password)
{
return new Result { Result = username == "user" && password == "pass" };
}
}
}
尝试使用(对我有效,检查第一个参数对象的responseJSON.Message):
尝试使用(对我有效,检查第一个参数对象的responseJSON.Message):
尝试使用(对我有效,检查第一个参数对象的responseJSON.Message):
尝试使用(对我有效,检查第一个参数对象的responseJSON.Message):
错误是什么?你看到了什么类型的错误?可能它没有返回有效的JSON?你的数据类型是JSON
。如果你只返回一个布尔值,我想你不需要返回JSON
。成功块中没有任何代码,你需要在那里添加代码,根据我输入的值重定向用户从服务器返回的(真/假)错误是什么?你看到的是什么类型的错误?可能它没有返回有效的JSON?你的数据类型是JSON
。如果你只返回布尔值,我想你不需要返回JSON
。成功块中没有任何代码,你需要在那里添加代码来重定向用户