无法通过asp.net中的javascript调用c#函数

时间:2015-03-12 17:31:10

标签: javascript jquery mysql asp.net

我有一个锚标签<a></a>,通过Jquery,我正在处理它上面的点击事件。按下我的x和y位置,分别是xIndexyIndex。 我想将这两个值存储在数据库中,为此我在c#StoreXY(string XIndex,string YIndex)文件的后端有一个方法test.aspx.cs。但由于我在javascript变量中有x和y位置的值,我需要通过javascript调用StoreXY()方法。以下是我正在使用的代码。

Test.aspx文件

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
<a class="Build" href="#">Build</a>
<script>
$(document).ready(function () {
$(".Build").click(function () {

       var r = parseInt($("#rows").val());
       var c = parseInt($("#cols").val());


       $(".outerDiv .isWalkable").each(function () {
       var x1 = $(this).index();
       var xIndex = (x1 % (c)) + 1;
       var yIndex = Math.floor(x1 / c) + 1;

        //calling c# function

        PageMethods.StoreXY(xIndex,yIndex);
        function onSucess(result) {
             alert(result);
        }
        function onError(result) {
              alert('Something wrong.');
        }
        //alert to just know that click event is actully handled
        alert(xIndex + '-' + yIndex);


        });
     });

 });

 </script>

test.aspx.cs

[WebMethod]
    public static string StoreXY(string Xindex, string Yindex)
    {
        SiteLogic SL = new SiteLogic();
        Site ste = SL.SelectByID(Convert.ToInt32(HttpContext.Current.Request.QueryString["ID"]));
        Walkable W = new Walkable();
        W.X = Convert.ToInt32(Xindex);
        W.Y = Convert.ToInt32(Yindex);
        W.SiteID = ste.SiteID;
        WalkableLogic wlc = new WalkableLogic();
       int x= wlc.Insert(W);
       if (x > 0)
           return "Successfull";
       else return "Unsuccessfull";
    }

现在我可以获得打印x和y位置值的警报,但c#方法在&#39; test.aspx.cs&#39;文件未被调用,因此数据库中没有插入任何条目。我如何调用&#39; StoreXY()&#39;来自javascript的方法?

2 个答案:

答案 0 :(得分:0)

尝试使用jQuery的post method发送值,首先使用param来序列化x / y索引:

    var things = { Xindex: xIndex, Yindex: yIndex };
    var data = $.param(things);
    $.post(url_to_your_method, data, function (result) {
        // doing stuff...
    });

'result'将是storeXY返回的字符串。 $ .post()方法是$ .ajax()的简写,它可以让你操作服务器端代码。

答案 1 :(得分:0)

您需要在调用Page方法时包含成功和失败函数:

function onSucess(result) {
     alert(result);
}
function onError(result) {
      alert('Something wrong.');
}    
PageMethods.StoreXY(xIndex,yIndex, onSuccess, onError);

//alert to just know that click event is actully handled
//May Fire before the above are complete.
alert(xIndex + '-' + yIndex);