Jquery 点击按钮后将变量数据传递给控制器?有什么好办法吗?
我面临一个棘手的问题。 我在谷歌上用了所有可能的方法,但没有运气。如果我遗漏了什么,现在可以帮我吗 我在下面的代码中做了一些注释。简而言之,我只需要一种方法,将存储在变量“delreason”中的提示文本传递给单击按钮时的控制器删除方法,这肯定是转到控制器删除方法 我的代码:-Jquery 点击按钮后将变量数据传递给控制器?有什么好办法吗?,jquery,asp.net-mvc,datatable,Jquery,Asp.net Mvc,Datatable,我面临一个棘手的问题。 我在谷歌上用了所有可能的方法,但没有运气。如果我遗漏了什么,现在可以帮我吗 我在下面的代码中做了一些注释。简而言之,我只需要一种方法,将存储在变量“delreason”中的提示文本传递给单击按钮时的控制器删除方法,这肯定是转到控制器删除方法 我的代码:- delreason = ''; $(document).ready(function () { var reason = $("#DropDown_Select").val()
delreason = '';
$(document).ready(function () {
var reason = $("#DropDown_Select").val()
var oTable;
$('#btnDeleteRow').click(function () {
delreason = prompt("r u serious");
//When delete button is clicked i need to first gather the reason and pass to controller delete method i.e I ADOPTED QUERY STRING WAY as BELOW YOU CAN FIND sDeleteURL used like query string so i can pass my Row-id asusual and additinally i can pass my prompt text entered .
$(this).prop('disabled', true);
});
$('#myDataTable').dataTable().fnDestroy();
oTable = $('#myDataTable').dataTable({
"bProcessing": true,
"bServerSide": true,
"bAutoWidth": true,
"bDestroy": true,
"sAjaxSource": "AjaxHandler",
"fnServerData": function (sSource, aoData, fnCallback) {
$('#DropDown_Select').change(function () {
alert($(this).val());
reason = $(this).val()
debugger;
//oTable.fnFilter($(this).val());
$.ajax({
"type": "GET",
"dataType": 'json',
"contentType": "application/json; charset=utf-8",
"url": sSource + "/" + reason,
"data": aoData,
"success": function (data) {
fnCallback(data);
}
});
});
$.ajax({
"type": "GET",
"dataType": 'json',
"contentType": "application/json; charset=utf-8",
"url": sSource + "/" + reason,
"data": aoData,
"success": function (data) {
fnCallback(data);
}
});
},
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aoColumns": [
{
"sName": "Lead_Id"
,
"bVisible": false,
"bSearchable": false,
"bSortable": false
},
{
"sName": "LeadName"
,
"fnRender": function (oObj) {
return '<a href=\"LeadIndividualDetail/' + oObj.aData[0] + '\">' + oObj.aData[1] + '</a>';
}
},
{ "sName": "ContactName", "sClass": "hidden-xs" },
{ "sName": "CompanyName" },
{ "sName": "Product" }
]
});
oTable.makeEditable({
"sDeleteURL": "/Lead/DeleteData/?start=" + delreason, // query string way via URL .
sDeleteHttpMethod: "GET",
"event": "click",
"style": "inherit",
"width": ($('myDataTable').width() - 40) + "px",
"height": ($('myDataTable').height() + 20) + "px",
"aoColumns":
[
null,
null,
null,
null
]
});
$("#myDataTable tbody tr").on('click', function (event) {
debugger;
alert("now");
$("#myDataTable tbody tr").removeClass('row_selected');
$(this).addClass('row_selected');
});
});
我错过什么了吗?有更好的选择吗
我找到了一些解决方法,但遗憾的是,它重定向到了另一个问题:如果我想在控制器上获取提示文本,我想重新加载我的oTable.makeEditable({CONTENT..好吧,但尝试这个简单的方法,在删除第一行之后,我无法进一步选择和删除任何行
任何使用查询字符串或watever传递提示文本的方法,我的控制器Deletemethod在单击时都会很感激
编辑1:删除方法的我的控制器代码:
public string DeleteData(int id )
{
var value = Request.QueryString["start"];
关于如果您将控制器方法更改为如下所示,我认为它将“按原样”工作:
[HttpPost]
public string DeleteData(int id)
...
oTable.makeEditable({
"sDeleteURL": "/Lead/DeleteData/?" + $.param([{name:'start', value:delreason}]),
sDeleteHttpMethod: "POST",
"event": "click",
...
并将javascript代码更改为如下所示:
[HttpPost]
public string DeleteData(int id)
...
oTable.makeEditable({
"sDeleteURL": "/Lead/DeleteData/?" + $.param([{name:'start', value:delreason}]),
sDeleteHttpMethod: "POST",
"event": "click",
...
您希望使用$.param()的原因是,仅添加到sDeleteURL不会每次都创建有效的请求,并且您将丢失数据或遇到其他问题,例如,如果用户输入“Client called&said go away”
另一种方法是,网格应该允许您通过使用beforeSend提前设置ajax调用,将原因注入ajax操作中。请参阅和
编辑:
查看当前版本的代码后,我看到的唯一真正的问题是click事件位于错误的位置。每次翻阅数据时,它都会添加另一个click事件侦听器,导致DeleteData ajax调用被多次执行。解决此问题的最简单方法是先分离现有侦听器苏志伟:
if (delete_bound) { $('#btnDeleteRow').die('click'); }
delete_bound = true;
$('#btnDeleteRow').live('click', function (){
但是,您确实应该对javascript进行结构化,以便它在表的构造中不包含事件。您还运行了较旧版本的jQuery,如果可能的话,您应该对其进行更新,以便您可以使用更多的工具,如
on()
和off()
方法。请为您的控制器发布代码(至少是方法签名)。很可能您没有将其正确设置为在删除过程中接收reason
参数。请尝试使用POST
方法而不是GET
方法,尤其是在为sDeleteURL
提供查询字符串的情况下。添加的代码:)请查看并建议我。HttpPost在我的情况下不起作用。当我尝试使我的控制器删除方法参数化时,通常我在第二个参数处得到null,我也知道为什么会这样。只是因为我的oTable.makeEditable没有得到刷新。我会尝试让你知道,伙计。我完全放弃了使用edita的计划ble插件和现在尝试使用ajax调用仍然存在问题,但这一次是兼容性问题。我在这里发布您可以分享您的想法:…RegardsUff:(同样的事情。我尝试了与代码相同的方式。但遇到了与我相同的情况。delreason值没有进入“sDeleteURL”:。我知道原因,即在oTable.makeEditable中({delreason没有得到更新可能是因为在单击按钮时代码块没有重新加载。这与我在以前的代码中遇到的问题相同&现在。编辑:此外,在控制器中保留POST方法时,甚至没有触发。替换为GET-It-Fireing,但delreason仍然是空的,就像您有一些其他未触发的东西一样“您的控件和服务器端按钮单击未显示在此处。是否有任何方式可以共享您的项目?是的,我可以传递我的整个项目。您可以共享任何类型的mailid吗?所述代码是我在解决方案中使用的excat代码,只需稍加修改..如前所述,您可以在此处找到我的新代码。”链接: