繁体   English   中英

Javascript函数无法正常返回?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM