Javascript 如何为JQuery/AJAX';获取';常规
我已经使用我能想到的每一种术语排列,阅读并重读了JQuery/AJAX回调上的每一个第一页Google结果,我尝试过的以下代码的重写都没有成功 我只需要为这个函数构造一个回调函数,它是一个更大的自调用JQuery函数的一部分,这样“message”变量就可以保存integrity_check.php例程的结果,然后在最后继续执行“message”的求值例程 (是的,这是使JQuery同步的又一次尝试,我知道回调是答案,但我找不到答案。)如果您能帮助我做到这一点,祝您成功和幸福:Javascript 如何为JQuery/AJAX';获取';常规,javascript,jquery,ajax,callback,jquery-callback,Javascript,Jquery,Ajax,Callback,Jquery Callback,我已经使用我能想到的每一种术语排列,阅读并重读了JQuery/AJAX回调上的每一个第一页Google结果,我尝试过的以下代码的重写都没有成功 我只需要为这个函数构造一个回调函数,它是一个更大的自调用JQuery函数的一部分,这样“message”变量就可以保存integrity_check.php例程的结果,然后在最后继续执行“message”的求值例程 (是的,这是使JQuery同步的又一次尝试,我知道回调是答案,但我找不到答案。)如果您能帮助我做到这一点,祝您成功和幸福: // If th
// If the integrity check passed, message will be empty.
// If the integrity check fails, message will hold text for an alert box.
var message;
$.get('integrity_check.php', { add_new_variable: $('#new_variable').val() }, function(data) {
if (data != 0) {
message = data;
}
});
[...some other code follows that may or may not set 'message' variable to a text message for alert box, so the following code must stand independently:]
if (message != '') {
alert(message);
} else {
[...proceed with using new_variable in HTML...]
}
更新
客人271314的建议指向了正确的方向,尽管我不得不做出修改以使其生效;请参见以下代码解决方案中的CAPS注释:
var request = $.get('integrity_check.php', { add_new_variable: $('#new_variable').val() }, function(data) {
if (data != 0) {
message = data;
}
return message;
});
// HERE I HAD TO SAVE THIS VALUE TO A NEW VARIABLE;
// $('#new_variable').val(); WAS NOT ACCESSIBLE OTHERWISE IN THE ROUTINE THAT FOLLOWED:
var nv = $('#new_variable').val();
// HERE IT WAS IRRELEVANT WHAT ARGUMENT WENT INTO function(),
// EXCEPT IT COULD *NOT* BE message; YOU HAD SUGGESTED msg, WHICH WAS IMMATERIAL, IT TURNED OUT
request.then(function() {
// HERE I *HAD* TO USE message, NOT THE GENERIC msg THAT YOU HAD PASSED INTO THE FUNCTION:
if (message != '') {
alert(message);
} else {
// THE ORIGINAL FORM HERE WOULDN'T WORK, AS $('#new_variable').val() WAS INACCESSIBLE IN THE FUNCTION:
//var newKeyword = '<label><input name="new_variable[]" type="checkbox" tabindex="-1" value="' + $('#new_variable').val() + '" checked /> ' + $('#new_variable').val() + '</label>';
// THIS, HOWEVER, WORKED...USING nv IN PLACE OF $('#new_variable').val();
var newVariable = '<label><input name="new_variable[]" type="checkbox" tabindex="-1" value="' + nv + '" checked /> ' + nv + '</label>';
$('#checkboxes').append(newVariable);
}
});
var request=$.get('integrity_check.php',{add_new_variable:$('#new_variable').val()},函数(数据){
如果(数据!=0){
信息=数据;
}
返回消息;
});
//在这里,我必须将这个值保存到一个新变量中;
//$(“#新#变量”).val();在随后的例行程序中无法访问:
var nv=$('#新的_变量').val();
//在这里,什么参数进入函数()是无关紧要的,
//除了它不可能是信息;你建议了味精,但事实证明这并不重要
然后(函数(){
//在这里,我*不得不*使用消息,而不是您传递到函数中的一般消息:
如果(消息!=''){
警报(信息);
}否则{
//此处的原始形式不起作用,因为$('#new_variable').val()在函数中不可访问:
//var newKeyword='+$('#new_variable')。val();
//然而,使用nv代替$('#new_variable').val()时,这是有效的;
var newVariable=''+nv+'';
$(“#复选框”).append(newVariable);
}
});
我很感谢guest271314,感谢他/她所发布的内容,尽管我不清楚为什么我必须做出更改才能使代码正常工作。澄清一下,有人吗 试试看
在上面的代码中,您试图做的是不可能的。您无法从范围外的成功回调中获取数据。将您的所有代码移到成功回调中。我现在还不会复制hammer,因为我觉得您的问题中可能遗漏了一些内容,但这是最有可能的复制:经过修改后,这很有效……请参阅我上面的更新和CAPS注释代码。@Tom“虽然我不清楚为什么我必须做出更改,以使代码正常工作。澄清,有人吗?“可以创建jsfiddle来演示吗?我将尝试在jsfiddle上构造一些东西来演示。与此同时,我想到了另一个问题:这确实适用于调用PHP验证脚本的$.get例程的一个实例,但我如何处理两个或更多这样的例程?@Tom”但我如何处理两个或更多这样的例程呢?“不确定是否正确地解释了问题?可以提出包括细节在内的新问题,或者创建JSFIDLE进行演示吗?
// If the integrity check passed, message will be empty.
// If the integrity check fails, message will hold text for an alert box.
var message;
var request = $.get('integrity_check.php'
, { add_new_variable: $('#new_variable').val() }
, function(data) {
if (data != 0) {
message = data;
}
return message
});
/*
[...some other code follows that may or may not set 'message' variable to a text message for alert box, so the following code must stand independently:]
*/
request.then(function(msg) {
// `msg`: `message`
if (msg != '') {
alert(msg);
} else {
// [...proceed with using new_variable in HTML...]
}
// return msg
}, function err(jqxhr, textStaus, errorThrown) {
console.log(errorThrown)
});