显示来自外部javascript的返回数据

时间:2016-11-23 02:06:59

标签: javascript c#

我正在尝试显示来自外部Javascript的返回数据。

这是我的代码

全局functions.js

function CurrentDate() {
var url = CurrentDateUrl();
$.get(url, function (e) {
    var Date = e.toString();
    console.log(e);
    console.log(Date);
    return Date;
});
// RETURN the Current Date example. 11/29/2013 10:57:56 AM
}

Sample.cshtml(查看)

<h2>Transaction Date: <b><span id="TransactionYear"></span></b></h2>

<script>
function CurrentDateUrl(){
    return '@Url.Action("CurrentDate", "Global")';
}


$(document).ready(function () {
    var Date = CurrentDate();

    document.getElementById("TransactionYear").innerHTML = Date; // the return is UNDEFINED

});
</script>

正如我们在global-functions.js中看到的那样,没有问题,因为它从我想要的地方返回,但当我尝试调用函数CurrentDate()时,它将返回 UNDEFINED 。有没有其他方式来展示它?或其他好方法?

编辑:

问题:您能否验证函数CurrentDate()是否被调用?

  • 是。当我尝试在CurrentDate()中返回硬编码字符串时,它将显示。

我尝试了下面建议的答案

function CurrentDate() {
var url = CurrentDateUrl();
var result;
$.get(url, function (e) {
    var date= e.toString();
    console.log(e); // will return the Date in console
    console.log(date); // will return the Date in console
    result = date;
    console.log(result); // will return the Date in console
});
console.log(result); // will return UNDEFINED in console
return "Sample";

}

输出

交易日期:样本

1 个答案:

答案 0 :(得分:2)

我认为你以错误的方式使用$ .get()函数!有关详细信息,请参阅以下link。它不能返回值,它应该在请求完成时执行回调函数!

你应该在$ .get()(你正在做)中将函数作为回调函数传递,并在该函数中执行你想要的逻辑(你现在没做的那样)。

我宁愿这样做(在你的情况下可能不太好,因为你使用的是外部文件):

$.get(url, function (e) {
    var Date = e.toString();
    console.log(e);
    console.log(Date);

    document.getElementById("TransactionYear").innerHTML = Date
});

或者在你的情况下尝试这个(同步通话):

 function CurrentDate() {
    var url = CurrentDateUrl();
    var result;

    $.ajax({
    url: url,
    type: 'get',
    async: false,
    success: function(data) {
        result = data;
    } 
 });
 return result;
}

请注意:我使用$ .ajax()并且我没有在$ .ajax中返回任何值。我还添加了 async:false 。现在您可以以这种方式返回结果,但它不是异步

如果要使用异步请求,则必须使用回调函数。某些实现可能类似于以下示例:

  function CurrentDate(callbackFunction) {
    var url = CurrentDateUrl();
    var result;

    $.get(url, function (e) {
        var Date = e.toString();
        callbackFunction(Date);
    });
}

// Call your function in code like this
CurrentDate(function(result) {
    // handle your result here
});