好的,我有一个C#函数,如果sql table中存在行
,则返回trueSystem.Web.Services.WebMethod]
public static bool Check(string ID)
{
string connectionString = ConfigurationManager.ConnectionStrings["SimpleDB"].ToString();
using (SqlConnection con = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(@"
IF EXISTS(SELECT 1 FROM Book Where Name = @ID)
SELECT 1 ELSE SELECT 0", con))
{
con.Open();
cmd.Parameters.AddWithValue("@ID", ID);
int result = Convert.ToInt32(cmd.ExecuteScalar());
return (result == 1);
}
}
我有另一个Javascript函数,但似乎这个“PageMethods.Check(btn.id)”语句永远不会是真的,即使sql表中的这样的行存在,所以我想我没有正确检查它,我想知道是否问题是在javascript或C#
function InIt(k ,l)
{
for (i = 1; i <= k; i++) {
for (j = 1; j <= l; j++) {
var btn = document.createElement("BUTTON");
btn.id = i + "_" + j;
if (PageMethods.Check(btn.id) == true) {
//DO SOMETHING
}
else {//DO SOMETHING ELSE
}
}
}
}
答案 0 :(得分:0)
PageMethod需要有一个回调函数,如 OnSuccess 和 Onfailure
使用OnSuccess函数检查返回值是否为真
像这样PageMethods.Check(btn.id,OnSuccess,Onfailure);
然后在OnSuccess函数
function OnSuccess(data)
{
if(data)
// do something
else
// do something else
}
我希望您在EnablePageMethods = true
<asp:ScriptManager>
答案 1 :(得分:0)
确保在scriptmanger中将EnablePageMethods属性设置为true。否则,PageMethods将无法按预期工作。
<asp:ScriptManager runat="server" EnablePageMethods="true">
通过在我的沙盒中使用您的代码,它按预期工作。
<asp:ScriptManager runat="server" EnablePageMethods="true"/>
<script type="text/javascript">
$(document).ready(function () {
if (PageMethods.Check(10) == true) {
alert(true);
}
else {
alert(false)
}
});
</script>
[WebMethod]
public static bool Check(string ID)
{
if (ID.Length > 0)
{
return true;
}
else
{
return false;
}
}