我正在尝试显示来自外部 Javascript
的返回数据。
这是我的代码
全局函数.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( View )
<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";
}
输出
交易日期:样本
最佳答案
我认为您以错误的方式使用了 $.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
});
关于javascript - 显示来自外部 javascript 的返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40754873/