Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为JQuery/AJAX';获取';常规_Javascript_Jquery_Ajax_Callback_Jquery Callback - Fatal编程技术网

Javascript 如何为JQuery/AJAX';获取';常规

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

我已经使用我能想到的每一种术语排列,阅读并重读了JQuery/AJAX回调上的每一个第一页Google结果,我尝试过的以下代码的重写都没有成功

我只需要为这个函数构造一个回调函数,它是一个更大的自调用JQuery函数的一部分,这样“message”变量就可以保存integrity_check.php例程的结果,然后在最后继续执行“message”的求值例程

(是的,这是使JQuery同步的又一次尝试,我知道回调是答案,但我找不到答案。)如果您能帮助我做到这一点,祝您成功和幸福:

// 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)
});