我尝试在jQuery中创建一个简单的ajax请求类。我在这里遇到的问题是,在process
函数中,我可以从变量response
获得响应。我返回response
但是在请求之外它是undefined
..我尝试了一些类型的全局变量,但没有成功。所以现在我试着从这里得到帮助。
app.js
var AjaxRequest = Class.extend({
init: function(url) {
this.url = url;
},
process: function() {
var response;
$.get("http://test.dec/ajax.php", function(data) {
var obj = jQuery.parseJSON( data);
response = obj;
console.log(response); // Get correct output
return response;
});
}
});
$('#test').on('click', function() {
var request = new AjaxRequest('ajax.php');
console.log(request.process()); // Get undefined
});
PHP ajax.php
<?php
$json = json_encode(['test' => 'test123']);
echo $json;
?>
答案 0 :(得分:0)
问题是ajax请求是异步的。您想要做的可能是传递一个回调进行处理,所以当它完成时,它将调用该函数继续。
以下是一个例子:
var AjaxRequest = Class.extend({
init: function(url) {
this.url = url;
},
process: function(callback) {
var response;
$.get("http://test.dec/ajax.php", function(data) {
var obj = jQuery.parseJSON( data);
response = obj;
console.log(response); // Get correct output
callback(response);
});
}
});
$('#test').on('click', function() {
var request = new AjaxRequest('ajax.php');
request.process(function(data) { console.log(data); });
});
请仔细阅读this,了解asynchronus调用的工作原理。
答案 1 :(得分:0)
请试试这个:
$.ajax({
url: 'your url',
global: false,
type: 'POST',
data: {},
async: false,
success: function() {}
});