Javascript 将Bool返回到AJAX请求
这肯定是一个非常简单的答案,但我看不出我错在哪里 只需键入一个测试AJAX请求,后面是c#代码。我无法让c#返回真/假语句,或者我无法让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 {
[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>