Javascript 使用Ajax传递参数(使用延迟和承诺)需要帮助

Javascript 使用Ajax传递参数(使用延迟和承诺)需要帮助,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,这很可能是一个重复的问题,因为这对学习者来说是一个常见的问题,但我就是找不到一个针对这个问题的切中要害的解决方案(我已经尝试了很久了!) 这是因为没有Ajax: <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> <script> function first(){ var bbb; var test = prompt("enter

这很可能是一个重复的问题,因为这对学习者来说是一个常见的问题,但我就是找不到一个针对这个问题的切中要害的解决方案(我已经尝试了很久了!)

这是因为没有Ajax:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
function first(){
var bbb;
var test = prompt("enter a number");    
    if(test == 6){
         bbb = true;    
         return bbb;
    } else {
        bbb = false;    
    }

}
function second(){
    if(first()){
        alert("returned true!!");
    } else {
        alert("returned false");    
    }
}
激活功能的按钮:

<button type="button" onClick="second()">Run Local Javascript only </button>
<button type="button" onClick="secondAjax()">Run Ajax call with param passing</button>
仅运行本地Javascript
使用参数传递运行Ajax调用
这是“remote.php”:如果input=6,则返回true

<?php
$check = $_POST['check'];
if($check == 6){
    echo json_encode(true);
} else {
    echo json_encode(false);
}
?>

您正在执行异步请求,在收到响应之前,
firstAjax()
将返回
undefined

您需要在
firstAjax()
中将回调函数定义为参数,然后在收到响应时调用此函数

function firstAjax(callback) {
  var check = prompt("number between 1 and 10 to send (6 should return true from PHP...)");
  $.post('remote',
    {check: check}, 
    function (data) {
      var returned = JSON.parse(data);
        if (returned == true) {
          alert(returned);
          callback(true);
        } else{
          alert(returned);
          callback(false);
        }
    });
}

function secondAjax() {
  firstAjax(function(result){
    if(result){
      alert("successfull return");
    }else{
      alert("return failed");
    }
  });
}

这很有效,谢谢,所以不需要改变吗?JQuery似乎非常面向回调,需要一些时间才能习惯!
function firstAjax(callback) {
  var check = prompt("number between 1 and 10 to send (6 should return true from PHP...)");
  $.post('remote',
    {check: check}, 
    function (data) {
      var returned = JSON.parse(data);
        if (returned == true) {
          alert(returned);
          callback(true);
        } else{
          alert(returned);
          callback(false);
        }
    });
}

function secondAjax() {
  firstAjax(function(result){
    if(result){
      alert("successfull return");
    }else{
      alert("return failed");
    }
  });
}