У меня есть функция в document.ready(), как показано ниже
$(document).ready(function () {
var reason = $("#DropDown_Select").val() // i can access this
var delreason;
$('#btnDeleteRow').click(function () {
delreason = prompt("Are u serious");
alert(delreason); //Here i am getting entered prompt value sucessfully
});
//when i try to use the delreason else where in my code i am getting " UNDEFINED "
//Actually i need this so i can pass it to controller
"sDeleteURL": "/Home/DeleteData/?start=" + delreason //delreason here is undefined
});
В части контроллера я использую:
var value = Request.QueryString["start"]; //undefined value coming
ИЗМЕНИТЬ 1:
var delreason='';
$(document).ready(function () {
var reason = $("#DropDown_Select").val()
var oTable;
$('#btnDeleteRow').click(function () {
delreason = prompt("r u serious");
alert(delreason);
debugger;
});
oTable = $('#myDataTable').dataTable({
"bProcessing": true,
"bServerSide": true,
"bAutoWidth": true,
"sAjaxSource": "AjaxHandler"
});
oTable.oTable.makeEditable({
"sDeleteURL": "/Home/DeleteData/?start=" + delreason // is there any problem here
});
Любое обходное решение очень ценится. Я не могу проверить delreason в sDeleteUrl, потому что он присутствует или нет, но одна вещь, я ничего не получаю от контроллера при попытке извлечь строку.
delreason
объявляется внутри замыкания (тела функции) и существует только внутри этого функционального блока.
Если вы попытаетесь получить доступ к этому шаблону формы переменной внутри одного и того же закрытия (тело функции, выполненной в готовом документе), переменная доступна.
Если вы попытаетесь получить доступ к нему из другого места, он будет недоступен.
Одна из возможностей заключается в том, чтобы определить эту переменную в глобальной области видимости, которая в браузере является объектом окна, например:
window.delreason = '...';
или просто
delreason = '...'; // without the var
Но если вы это сделаете, учтите, что вы загрязняете глобальную область, и это обычно не очень хорошая идея (вы можете столкнуться с другими сценариями). Однако, если у вас нет других сценариев, и это очень простая страница, она может быть приемлемой (хотя и не очень приемлемой).
Другой вариант - создать скрытое поле и использовать jquery для установки и получения значения в этом поле:
<input type='hidden' id='delreason'/>
В вашем js:
$('#delreason').val('written value');
var delreason = $('#delreason').val();
Подход 1 - использовать глобальный объект окна:
$(document).ready(function () {
var reason = $("#DropDown_Select").val() // i can access this
$('#btnDeleteRow').click(function () {
window.delreason = prompt("Are u serious");
alert(window.delreason);
});
});
Подход 2 - объявить разброс в глобальном масштабе (за пределами закрытия):
var delreason = '';
$(document).ready(function () {
var reason = $("#DropDown_Select").val() // i can access this
$('#btnDeleteRow').click(function () {
delreason = prompt("Are u serious");
alert(delreason);
});
});
Если ваша настоящая проблема заключается в том, что вы хотите получить доступ к разбору повсюду, вы должны объявить ее за пределами документа.
var delreason;
необходимо объявить за пределами $(document).ready()
доступ к нему по всему миру.
Вы можете понять разницу с FIDDLE
var delreason
вне$(document).ready(function () {