我有一个锚标签<a></a>
,通过Jquery,我正在处理它上面的点击事件。按下我的x和y位置,分别是xIndex
和yIndex
。
我想将这两个值存储在数据库中,为此我在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的方法?
答案 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);