Javascript 调用函数时未捕获的语法错误(意外标记)

Javascript 调用函数时未捕获的语法错误(意外标记),javascript,syntax-error,Javascript,Syntax Error,我想写一些代码来从aJax调用返回一些数据 以下是我所指的资源: 以下是我编写的代码: var data = getData("http://www.file.txt", function(result)); alert(data); function getData(dataUrl, result) { $.ajax({url: dataUrl, success: function(result){ return result; }}); } 我得到以下错误

我想写一些代码来从aJax调用返回一些数据

以下是我所指的资源:

以下是我编写的代码:

var data = getData("http://www.file.txt", function(result));
alert(data);

function getData(dataUrl, result)
{
    $.ajax({url: dataUrl, success: function(result){
        return result;
    }});
}
我得到以下错误:

未捕获的语法错误:意外标记)

在这一行代码中:

var data = getData("http://www.file.txt", function(result));
此外,在获取大量数据时,上述代码是否有效


谢谢

您没有传递括号,因此得到了未捕获的语法错误:意外标记)错误

但我认为你必须使用这样的函数


如果您使用的是ajax调用,那么您必须使用
success
。然后在接收数据后将其作为回调执行

代码应仅为以下内容:

var data = '';
$.ajax({url: dataUrl, success: function(result){
        data = result;
        alert(data);
    }});

这不是回调的正确语法,而且异步调用也不是这样工作的。请尝试此操作-
数据在回调中设置

var data;
getData("http://www.file.txt"); 

function getData(dataUrl)
{
    $.ajax({url: dataUrl, success: function(result){
        data = result;
        alert(data);            
    }});
}

从JavaScript基础知识来看,函数应该满足以下要求

  • JavaScript函数由function关键字、名称和括号()定义
  • 函数基本上是一个JavaScript对象。因此,括号是必需的,因为它们将函数与脚本或网页的其他项区分开来
  • 所以代码行实际上是不正确的

    var data = getData("http://www.file.txt", function(result));
    
    它应该是以下任一项

    var data = getData("http://www.file.txt", function(result) {
        //anonymous function body
    });
    


    嗯,
    function(result)
    是函数表达式的开头,但它缺少主体。身体。另外,在您的
    success
    回调中
    return result
    并不完全有效。您能解释一下您期望
    函数(result)
    做什么吗?我很想以重复的方式结束此操作(因为第一行),但我觉得您实际的问题是不了解回调(甚至可能是函数)的方式在JS中工作。为什么全局
    var data
    变量?
    data
    不是完全全局的,只是在这个片段所在的闭包中<代码>结果
    参数,因为我错过了它;)当然,
    getData
    是免费的(“全局”)。异步调用不是这样工作的。你能解释一下你的代码和OP的代码有什么区别吗?根据我对这个问题的理解,他需要的是执行一些代码作为回调,并将值赋给数据。因此,作为成功函数的结果,结果将分配给数据。具体来说:
    警报(数据)
    将警报空字符串,而不是预期的结果。警报(数据)将在数据分配结果值后使用。您为什么将其放在其中(OP没有)?为什么要使用
    数据
    变量,而不仅仅是
    警报(结果)
    ?这只是一个例子,为什么op get error会出错,所以我在@bergib给出了解释,但是你的例子会抛出一个错误,因为
    结果
    没有定义。我认为您不知道
    var data=getData(“http://www.file.txt“,回调(结果))
    does.op pass result在他的函数中,所以我传递了它,这个解决方案是针对未捕获的语法错误:意外标记)所以我给出了关于它的解释,而不是针对结果和其他op要求的未捕获的语法错误:意外标记)哦,是的,关于承诺问题,你是对的,所以我编辑了我的答案,所以如果有人引用它,它将得到正确的答案解决方案没有错,谢谢@FelixKling@KevalBhatt:现在是:-/Use
    返回承诺。解析($.ajax(…)
    (或者根本不要转换为本机承诺)
    var data = getData("http://www.file.txt", function(result));
    
    var data = getData("http://www.file.txt", function(result) {
        //anonymous function body
    });
    
    var data = getData("http://www.file.txt", callbackFn(result));
    
    function callbackFn(result) {
        //function body goes here.
    }