努力将AJAX结果变量返回给JavaScript
请注意,$.ajax
下面的调用是同步(async: false
)。
阿贾克斯电话
function getState(callback) {
$.ajax({
url: 'getSearchState.php',
data: { "state": callback },
type: 'GET',
async: false,
success: function(result){
alert(result);
},
error: function(result) {
alert(result);
}
});
}
Ajax PHP
<?php
// Database Setup and Query
while ($row = $xxxxx->fetch(PDO::FETCH_ASSOC)) {
$StateVal = $row['State'];
}
return $StateVal;
?>
Javascript调用函数
var URL = District.trim();
var StateURL = getState(URL);
它可以很好地从函数获取URL可变,但不返回任何内容。
任何帮助将是巨大的!
该代码在客户端和服务器端都存在问题。
您getState
从不退回任何东西,因此您看不到除了undefined
for之外的任何东西也就不足为奇了StateURL
。
不要使用同步ajax。它造成了可怕的用户体验。但是,如果您真的要继续使用它,可以按照以下方法操作:
function getState(state) {
var result; // <=== Where we'll put our result
$.ajax({
url: 'getSearchState.php',
data: {"state": state},
type: 'GET',
async: false,
success: function(data) {
// Remember the result;
result = data;
},
error: function() {
result = /*...whatever you want to use to signal an error */;
}
});
// Return the result
return result;
}
请注意,我将参数的名称更改为state
,因为它不是回调。
但是同样,不要使用同步ajax。而是使用回调或Promise。
承诺:$.ajax
已经返回了承诺,因此直接将其返回:
function getState(state) {
var result; // <=== Where we'll put our result
$.ajax({
url: 'getSearchState.php',
data: {"state": state},
type: 'GET',
async: false,
success: function(data) {
// Remember the result;
result = data;
},
error: function() {
result = /*...whatever you want to use to signal an error */;
}
});
// Return the result
return result;
}
请注意,我将参数的名称更改为state
,因为它不是回调。
但是同样,不要使用同步ajax。而是使用回调或Promise。
承诺:
function getState(state) {
return $.ajax({
url: 'getSearchState.php',
data: {"state": state},
type: 'GET'
});
}
用法:
getState(URL)
.done(function(StateURL) {
// Use it
})
.fail(function() {
// Failed
});
打回来:
function getState(state, callback) {
$.ajax({
url: 'getSearchState.php',
data: {"state": state},
type: 'GET',
success: function(data) {
// Call the callbback with the result
callback(data);
},
error: function() {
// Call the callback with an error
callback(/*...whatever you want to use tosignal an error */);
}
});
}
用法:
getState(URL, function(StateURL) {
// Use it, check for error
});
正如RiggsFolly指出的那样,您正在从PHP代码中返回一个字符串。但这不会输出。要在客户端使用它,您需要输出它(例如,echo
类似的东西)。为了使它易于被JavaScript使用,您可能需要json_encode
确保它采用JavaScript可以理解的格式:
echo json_encode($stateVal);
然后在您的success
(或done
)函数中使用JSON.parse
它:
result = JSON.parse(data);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句