我有一个onclick事件,其中包含我要发布到后端php脚本的值。只是不确定如何在对话框功能中获取它。
function reorder(job_index)//<--------this fella
{
$('#dialog').dialog('open');
}
$(document).ready(function(){
$(function() {
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 250,
width: 600,
modal: true,
buttons: {
'Yes, use the number above': function() {
var jobID=$("#jobnumber").val();
$.post("rpc.php", {
job_index:job_index,// <-------to here
jobID:jobID,
method: "reorder"
},
function(data,textstatus)
{
alert(data.message);
}, "json");
},
'No, create a new number for me': function() {
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
}
});
});
});
值为job_index。有什么提示吗?
由于
答案 0 :(得分:1)
在下面的代码中,我使用的是一个允许您存储和检索索引的函数。
函数index
通过返回声明并返回另一个函数来创建closure。这意味着变量_index
仍然可用(认为它就像变量是在堆上分配而不是堆栈帧;即malloc-ed )一旦(外部) )函数已经返回,正如您所看到的那样,函数是自调用的,因为函数的最后一行是}();
,因此在解析过程中会立即返回。
然后当你再次调用函数index
时(现在你将基本上调用带有一个正式参数的内部函数ind
),你可以传入你的索引,如果你这样做,该函数将它存储在我前面提到的_index
变量中......即外部函数返回后仍然可用的变量。
如果你没有传入一个参数(即调用这样的函数:index()
),该函数只返回你存储的变量。这背后的逻辑是,如果未传递参数,则实际参数的值为undefined
。因此,函数检查值是否为undefined
,如果是,则只返回您的变量。
顺便说一句,你的外部ready
函数中有一个嵌套的ready
函数。这是因为$(function() {
与$(document).ready(function(){
相同。我在下面的代码中解决了这个问题:
var index = function () {
var _index;
return function (ind) {
if (typeof ind !== "undefined") {
_index = ind;
}
return _index;
};
}();
function reorder(job_index)
{
index(job_index);
$('#dialog').dialog('open');
}
$(function () {
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 250,
width: 600,
modal: true,
buttons: {
'Yes, use the number above': function () {
var jobID = $("#jobnumber").val();
$.post("rpc.php", {
job_index: index(),
jobID: jobID,
method: "reorder"
},
function (data, textstatus) {
alert(data.message);
},
"json");
},
'No, create a new number for me': function () {
$(this).dialog('close');
},
Cancel: function () {
$(this).dialog('close');
}
}
});
});
另一种方法是使用nickf提到的data
方法。这将允许您直接将索引存储为元素的一部分,如:
function reorder(job_index)
{
$('#dialog').data("job", job_index).dialog('open');
}
$(function () {
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 250,
width: 600,
modal: true,
buttons: {
'Yes, use the number above': function () {
var jobID = $("#jobnumber").val();
$.post("rpc.php", {
job_index: $("#dialog").data("job"),
jobID: jobID,
method: "reorder"
},
function (data, textstatus) {
alert(data.message);
},
"json");
},
'No, create a new number for me': function () {
$(this).dialog('close');
},
Cancel: function () {
$(this).dialog('close');
}
}
});
});
答案 1 :(得分:0)
您可以使用.data()
答案 2 :(得分:0)
创建一个全局变量,将最后点击的job_index存储在那里,然后在点击处理程序中从那里读取它。
var last_job_index;
function reorder(job_index)
{
last_job_index = job_index;
$('#dialog').dialog('open');
}
//snip
$.post("rpc.php", {
job_index: last_job_index,
jobID: jobID,
method: "reorder"
},
警告:这是一个非常不专业的解决方案(共享可变状态)