【问题标题】:How do I get the value of the model that was return to a JavaScript function?如何获取返回给 JavaScript 函数的模型的值?
【发布时间】:2018-12-18 02:07:08
【问题描述】:

以下是控制器的功能/方法:

public ModelVoucherLogs getDetails(int id)
{
    VoucherHistoryManager manager1 = new VoucherHistoryManager();
    var m = manager1.FindAll()
        .Where(a => a.ID == id)
        .Single();

    VoucherLogsManager manager = new VoucherLogsManager();

    ModelVoucherLogs model = manager.FindAll()
        .Where(a => a.VoucherNo.Equals(m.VoucherNo) &&
                    a.TransactionType.Equals("CONSUMED"))
        .Single();

    return model;
}

这将是 JavaScript 函数:

function getDetails(id) {
    var modal = document.getElementById('details_modal');
    modal.style.display = "block";
    $.ajax({
        type: "POST",
        url: "Main/getDetails?id=" + id,
        success: function (model) {

        }
    });
}

如何单独获取模型的值。 示例:假设模型具有凭证 ID、交易类型等。
我如何获得这些价值。

【问题讨论】:

标签: javascript c# asp.net ajax razor


【解决方案1】:

只是举个例子,我觉得这应该可行吗?创建一个我们现在将调用 returnData 的变量,并将 ajax 结果(模型)绑定到该变量中。在函数结束时,返回数据,然后我们可以在 HandleDetails 函数中访问它。 (您可能希望使 ajax 调用同步,否则可能会返回一个空变量)

function getDetails(id) 
    var returnData;
    var modal = document.getElementById('details_modal');
    modal.style.display = "block";
    $.ajax({
        type: "POST",
        url: "Main/getDetails?id=" + id,
        async: false,
        success: function (model) {
            returnData = model;
        }
    });
    
    return returnData;
}

function HandleDetails() {
    var data = getDetails(1);
    
    var voucherId = data.VoucherID;
    var transactionType = data.TransactionType;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【讨论】:

  • 这个答案不正确。您是否尝试过该代码? $.ajax 发出一个 ASYNCHRONOUS 请求,这意味着您的 getDetails 的返回发生在成功函数执行之前,因此 getDetails 将永远、永远、永远返回 undefined。
  • 这个答案在多个方面被破坏了。这是异步方法的同步方法。那永远行不通。
  • @A.Llorente 我认为你没有阅读我帖子的最后一部分,那么?清楚地说明你刚刚做了什么,即。如果 AJAX 调用是异步的(目前是异步的),它会在请求有机会执行它之前返回一个未定义/空变量? (尽管我很感激反馈,并且永远都会,无论我是试图提供解决方案还是寻求解决方案的人)
  • 好吧,您刚刚编辑了代码以使其同步,如果我没记错的话,在编辑之前您的答案中没有提到同步,当我发表评论时,它是 100% 有效和准确的。无论如何,使 AJAX 调用同步是不好的做法,您最好使函数异步或返回一个在成功函数中解析的承诺。
  • @A.Llorente 我确实编辑了它,但只有代码部分。 “(您可能希望使 ajax 调用同步,否则可能会返回一个空变量)”从一开始就存在。但再说一次,我不想和别人打架,我个人非常重视反馈。
猜你喜欢
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多