Javascript 使用Ajax传递参数(使用延迟和承诺)需要帮助
这很可能是一个重复的问题,因为这对学习者来说是一个常见的问题,但我就是找不到一个针对这个问题的切中要害的解决方案(我已经尝试了很久了!) 这是因为没有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
<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");
}
});
}