Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax调用无法从web api服务获取返回消息_Javascript_Jquery_Asp.net_Ajax_Asp.net Web Api - Fatal编程技术网

Javascript Ajax调用无法从web api服务获取返回消息

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);

我正在对提供身份验证例程的webapi服务进行一个简单的ajax调用。 我的问题是ajax调用可以向服务发出请求,但一旦服务返回布尔值,就会出错

我想要什么:

<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
。成功块中没有任何代码,你需要在那里添加代码来重定向用户