我有一个foo发出Ajax请求的函数.我怎样才能从中回复foo?
我尝试从success回调中返回值,并将响应分配给函数内部的局部变量并返回该变量,但这些方法都没有实际返回响应.
function foo() {
var result;
$.ajax({
url: '...',
success: function(response) {
result = response;
// return response; // <- I tried that one as well
}
});
return result;
}
var result = foo(); // It always ends up being `undefined`.
Run Code Online (Sandbox Code Playgroud) function lookupRemote(searchTerm)
{
var defaultReturnValue = 1010;
var returnValue = defaultReturnValue;
$.getJSON(remote, function(data)
{
if (data != null)
{
$.each(data.items, function(i, item)
{
returnValue = item.libraryOfCongressNumber;
});
}
});
return returnValue;
}
Run Code Online (Sandbox Code Playgroud)
为什么returnValuefrom this函数总是等于在函数开头设置的默认值,而从不等于从JSON查找中检索的值?
我有一个javascript函数,它将数据发布到验证脚本并从那里获取值.post请求的回调函数返回一个布尔值,我试图让整个函数返回该布尔值.现在,回调函数返回正确的值,但函数本身不返回任何内容.这是代码:
function validate(request_type, request_text) {
$.post("http://www.example.com/ajax/validate.php",{
type: request_type,
text: request_text
}, function(data) {
return (data == "valid");
});
}
Run Code Online (Sandbox Code Playgroud)
我意识到这是一种"同步"调用,这不是AJAX的意思,但我已经在validate.php(数据库调用等)中有很多函数,我无法在Javascript中实现,我看到了像这样的线程谈论使用某种形式的处理程序.
当我在一个语句中使用它时,我将如何编写一个简单的处理程序来使变量data或布尔比较的结果data == "valid"可用if/else(这是应该使用这个函数的地方)?
编辑:例如,if将使用布尔结果的一个语句:
if (!validate('password',pass_new)) {
$('#pass_new').addClass('error');
$('#pass_confirm_new').addClass('error');
$(error_string.format('Please enter a valid password.')).insertAfter('#pass_confirm_new');
$('#pass_text_short').hide();
$('#pass_text_long').show();
Run Code Online (Sandbox Code Playgroud)
编辑:onsubmit在我的HTML表单中使用事件调用的函数:
function valid_pass_sett() {
//code to remove errors left over from previous submissions - snipped
pass_old = $('input[name=pass_old]').val();
pass_new = $('input[name=pass_new]').val();
pass_confirm_new = $('input[name=pass_confirm_new]').val();
//some if statements that don't involve …Run Code Online (Sandbox Code Playgroud) 我想写一个javascript函数,它将向PHP脚本发出ajax请求并返回它的结果.这就是它的样子:
function myjsfunc(some_data)
{
$.post(
"/myscript.php",
{ some_data: some_data },
function(response)
{
result = response;
}
);
return result;
}
Run Code Online (Sandbox Code Playgroud)
问题是,这result总是未定义的.这可能是因为变量result不在myjsfunc命名空间中?或者是因为在处理主函数后接收到成功函数结果?
无论如何,我怎样才能获得理想的结果?有办法吗?
我有这个:
get_json = (url) ->
$.getJSON "#{url}.json", {}, (json, response) ->
return json
Run Code Online (Sandbox Code Playgroud)
但这编译为:
getJson = function(url) {
return $.getJSON("" + url + ".json", {}, function(json, response) {
return json;
});
};
Run Code Online (Sandbox Code Playgroud)
..并返回响应对象.我怎样才能返回json呢?
jquery ×5
javascript ×4
ajax ×3
asynchronous ×1
callback ×1
coffeescript ×1
getjson ×1
return-value ×1