![](/img/trans.png)
[英]Chartjs / Javascript - My function not returning array properly, but console logs okay
[英]Javascript function not returning properly?
function IsSwap()
{
var urlString = "<%= System.Web.VirtualPathUtility.ToAbsolute("~/mvc/Indications.cfc/GetModelType")%>";
var id =
{
id : GetGUIDValue()
}
$.ajax({
type: "POST",
url: urlString,
data: id,
success: function(data) {
if (data.toString() == 'SwapModel')
{
return true;
}
}
});
预期的结果是true
。 我可以在返回之前提醒,所以我知道它已经达到了这一点。 在另一个函数中,我试图得到我的bool并像这样使用它:
var isSwap = IsSwap();
if (isSwap)
并且它一直说isSwap
未定义。 为什么?
你无法从这样的ajax调用返回。
基本上你正在做的是从内部函数返回true。
您应该在成功方法中调用所需的任何代码,因为这是唯一可以保证ajax调用已完成的时间。
您正在使用异步的ajax请求。 您无法从ajax请求返回值。 试试这个:
function IsSwap()
{
var urlString = "<%= System.Web.VirtualPathUtility.ToAbsolute("~/mvc/Indications.cfc/GetModelType")%>";
var id =
{
id : GetGUIDValue()
}
$.ajax({
type: "POST",
url: urlString,
data: id,
success: function(data) {
if (data.toString() == 'SwapModel')
{
ResultIsTrue(); // call another function.
}
}
});
执行后,而不是使用此:
var isSwap = IsSwap();
if (isSwap){
// Do Somethinh
}
试试看:
IsSwap();
function ResultIsTrue(){
// Do Same Thing
}
AJAX请求是异步的,这意味着IsSwap
将在响应AJAX请求之前返回。
无论你需要做什么基于isSwap
,你应该在你的AJAX请求的成功处理程序中做。
更新 :最后一段对于它的工作是不正确的,但值得注意的是同步不被推荐:
或者,您可以使AJAX请求同步(通过向AJAX选项添加async:false
)并保留它的方式 - 但是我不建议这样做,因为您的浏览器在等待响应时会“冻结”。
检查这一行:
var urlString = "<%= System.Web.VirtualPathUtility.ToAbsolute("~/mvc/Indications.cfc/GetModelType")%>";
尝试使用单引号,如下所示:
var urlString = '<%= System.Web.VirtualPathUtility.ToAbsolute("~/mvc/Indications.cfc/GetModelType")%>';
双引号内的双引号很可能是你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.