Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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 将Bool返回到AJAX请求_Javascript_C#_Jquery_Asp.net_Ajax - Fatal编程技术网

Javascript 将Bool返回到AJAX请求

Javascript 将Bool返回到AJAX请求,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,这肯定是一个非常简单的答案,但我看不出我错在哪里 只需键入一个测试AJAX请求,后面是c#代码。我无法让c#返回真/假语句,或者我无法让AJAX将其识别为真/假 [WebMethod] public static bool testme(int testnumber) { if (testnumber < 12) { return true; } else {

这肯定是一个非常简单的答案,但我看不出我错在哪里

只需键入一个测试AJAX请求,后面是c#代码。我无法让c#返回真/假语句,或者我无法让AJAX将其识别为真/假

  [WebMethod]
    public static bool testme(int testnumber)
    {
        if (testnumber < 12)
        {
            return true;             }
        else
        {

            return false;
                }

    }
[WebMethod]
公共静态bool testme(int testnumber)
{
如果(测试编号<12)
{
返回true;}
其他的
{
返回false;
}
}
阿贾克斯:


$(文档).ready(函数(){
$(“#测试”)。单击(函数(){
$.ajax({
类型:“post”,
url:“WebForm1/testme”,
数据:{testnumber:13},
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据){
如果(数据){
console.log(“真”);
}
否则{
控制台日志(“假”);
}
},
错误:函数(错误){
控制台日志(“错误”);
}
});
});
})
按钮:

<input type="button" id="test" value="click me"/>

console.log显示为true,即使我输入的数字大于12,这将从c#方法返回“false”bool

你的
如果(数据)
检查正在检查真实性,
数据将成为一个对象,因此查看它的属性,你可以找到C的结果


如果您不熟悉JS truthyness,请查找更好的描述:但是如果每个变量都有有效值,如果它为null或未定义(或0或“”),则将其视为truthy那么它就不会被认为是真实的,并且布尔检查会失败。

当您从这样的WebMethod得到响应时,您必须使用a.d来引用该值。您当前的代码只是检查是否得到响应,并且很可能总是计算为true

<script>
        $(document).ready(function () {
            $('#test').click(function () {
               $.ajax({
                   type: "post",
                    url: "WebForm1/testme",
                    data: { testnumber: 13 },
                    contentType: "application/json; charset=utf-8",
                    datatype: "json",
                    success: function (data) {
                        if (data.d) {
                            console.log("true");
                        }
                        else {
                            console.log("false");
                        }
                    },
                    Error:function(error){
                        console.log("error");
                    }
                });
            });
        })
    </script>

$(文档).ready(函数(){
$(“#测试”)。单击(函数(){
$.ajax({
类型:“post”,
url:“WebForm1/testme”,
数据:{testnumber:13},
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据){
如果(数据d){
console.log(“真”);
}
否则{
控制台日志(“假”);
}
},
错误:函数(错误){
控制台日志(“错误”);
}
});
});
})

还有一个指针可以帮助您了解发生了什么,那就是使用浏览器开发工具(F-12)的“网络”选项卡查看从服务器返回的响应格式。它不仅返回true或false,它还返回
d:true
d:false
因此我提到的更改。

每当我必须使用Ajax时,我都从函数JSON对象返回。 例如:

return Json(new { result = true });
在AJAX中:

<script>
        $(document).ready(function () {
            $('#test').click(function () {
               $.ajax({
                   type: "post",
                    url: "WebForm1/testme",
                    data: { testnumber: 13 },
                    contentType: "application/json; charset=utf-8",
                    datatype: "json",
                    success: function (data) {
                        if (data.result === true) {
                            console.log("true");
                        }
                        else {
                            console.log("false");
                        }
                    },
                    Error:function(error){
                        console.log("error");
                    }
                });
            });
        })


  </script>

$(文档).ready(函数(){
$(“#测试”)。单击(函数(){
$.ajax({
类型:“post”,
url:“WebForm1/testme”,
数据:{testnumber:13},
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据){
如果(data.result==true){
console.log(“真”);
}
否则{
控制台日志(“假”);
}
},
错误:函数(错误){
控制台日志(“错误”);
}
});
});
})

所以结果证明它相对简单,但不确定为什么需要这样做。我得到了他的帮助

我需要改变 //settings.AutoRedirectMode=RedirectMode.Permanent; 到

settings.AutoRedirectMode=RedirectMode.Off

到我的RouteConfig.cs,然后一切正常


如果有人知道为什么在添加System.Web.Services时不会自动更改;或者这意味着什么,无论如何,我想知道,现在一切都很好

可能数据类型需要是bool而不是JSON?不,这只是停止整个AJAX请求,还有其他想法吗?那么检查属性的代码是什么,我已经尝试了data.properties,但我找不到重载方法?有什么帮助吗?我倾向于使用
console.log(数据)在开发者工具中,你应该能够检查它。问题在于控制台。日志(数据)在开发者工具控制台中给我完整的页面脚本,而不是一个结果。请向@MitchelSellers寻求帮助,我没有C#后端的经验,根据我的经验,这要么是一个路由问题,要么是一个错误的请求。谢谢,希望它很简单,我正在做一些错误的事情,但仍然不起作用,现在得到错误的返回,即使我已经将“测试编号”更改为11,是否通过开发人员工具返回正确的值?(你可以发布你在那里看到的返回)通过开发工具,如果我console.log(data.d)我没有定义,如果我console.log(data)我在consoleOk中得到了完整的页面脚本,这有助于确定它,听起来你没有正确地访问web方法,但实际上是完整的页面呈现对于URL,我使用的是WebForm/testme(方法的名称)除此之外,我应该如何访问该方法?
<script>
        $(document).ready(function () {
            $('#test').click(function () {
               $.ajax({
                   type: "post",
                    url: "WebForm1/testme",
                    data: { testnumber: 13 },
                    contentType: "application/json; charset=utf-8",
                    datatype: "json",
                    success: function (data) {
                        if (data.result === true) {
                            console.log("true");
                        }
                        else {
                            console.log("false");
                        }
                    },
                    Error:function(error){
                        console.log("error");
                    }
                });
            });
        })


  </script>