我有这段代码:
function nameToCode(nameGroup) {
$.post("execute.php", { something: sendSomething }, function(data) {
return data;
});
}
variable = nameToCode("some text");
但我唯一得到的变量是未定义的,任何想法?感谢。
答案 0 :(得分:4)
结果将无法立即生效,因此您必须以不同的方式构建代码:
function nameToCode(nameGroup, callback) {
$.post("execute.php", { something: sendSomething }, function(data) {
callback(data);
});
}
nameToCode("some text", function(variable)
{
/* use variable here */
});
答案 1 :(得分:1)
$.post
的第四个参数是dataType。
您可以将其设置为JSON,以便将返回数据解析为JavaScript对象或数组。
$.post(
"execute.php",
{ something: sendSomething },
function(data){ return data; },
'json');
在execute.php文件中,您可以执行类似
的操作<?php
$return_data=array('nameToCode'=>'some text');
header('Content-Type: application/json');
echo json_encode($return_data);
exit();
答案 2 :(得分:-1)
你不能得到这样的回调。存在异常问题。 您可以使用.ajax而不是.post;
function nameToCode(nameGroup, callback) {
$.ajax({
url: 'execute.php',
type: 'POST',
aysnc:false,
data: 'something=sendSomething',
success: function(data) {
return data;
}
});
这将有效。
你的意思是,它不起作用或你不喜欢这个解决方案?
这是关于javascript工作流程。 js不等待任何同步操作。你可以在成功功能块中完成你的工作,或者你必须使用async:false参数。我建议在成功功能块中做任何你想做的事情。如果您使用aysnc:false,它会在短时间内阻止您的浏览器。