2015-06-24 58 views
1

我想編寫一些代碼來從aJax調用返回一些數據。未捕獲的SyntaxError:意外的令牌)當調用函數

這裏,我指的是資源:http://www.w3schools.com/jquery/ajax_ajax.asp

這裏是我寫的代碼:

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

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

我收到以下錯誤:

Uncaught SyntaxError: Unexpected token)

在這行代碼:

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

另外,獲取大量數據時上述代碼是否有效?

感謝

+0

呃,'函數(結果)'函數式的開始處,但它缺少它的身體。 [alert(result)'應該去的]正文[http://stackoverflow.com/q/14220321/1048572]。此外''成功'回調中的'返回結果'並不完全正確。 – Bergi

+3

你能解釋一下你期望'函數(結果)'做什麼嗎? –

+1

我試圖關閉它作爲http://stackoverflow.com/q/14220321/218196(因爲第一行)的副本,但我覺得你的實際問題是缺乏瞭解如何回調(甚至可能是函數)在JS工作。 –

回答

-1

你是不是通過支架等你拿未捕獲的SyntaxError:意外的標記)錯誤

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

但我認爲你必須使用函數這樣

function getData() { 
    return Promise(function(resolve, reject) { 
    $.ajax({ 
     // ... 
     success: function(data) { 
     resolve(data); 
     }, 
     error: function(jqxhr, status, error) { 
     reject(error); 
     } 
    }); 
    }); 
} 

getData("http://www.file.txt").then(function(result) { 
console.log(result); 
}).catch(function() { 
    // an error occurred 
}); 

+0

你有沒有試過我的代碼控制檯它的工作原理 –

+0

傳遞'callback(result)'也是錯誤的。 – Bergi

+0

這只是一個例子,爲什麼op得到錯誤,所以我給瞭解釋@bergi –

-1

如果您使用Ajax調用,則必須使用success.then與它回調接收數據後執行。

的代碼應該只是這樣的:

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

你能解釋一下你的代碼和OP的區別嗎?代碼是? –

+0

[This does not work](http://stackoverflow.com/q/14220321/1048572) – Bergi

+0

根據我對這個問題的理解,需要的是他想要執行一些代碼作爲回調並將值賦給數據。因此,作爲成功功能的結果,結果將被分配給數據。 –

0

這不是一個回調正確的語法,加上異步調用不做得比較工作這樣。試試這個 - data在回調中設置。

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

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

爲什麼這個全局'var data'變量? – Bergi

+0

'data'只是不太全局,只是在這個片段所在的''result'參數中,因爲我錯過了它;) –

+0

當然,它是免費的(「全局」)到'getData'。異步調用不能像那樣工作。沒有理由在該範圍內(不管範圍如何)。 – Bergi

0

從JavaScript的基礎知識來看,函數應該滿足以下幾點。

  1. JavaScript函數是用函數關鍵字定義的,後跟一個名稱,後跟一個括號()。
  2. 函數基本上是一個JavaScript對象。所以,括號是必需的,因爲它們從腳本或網頁的其他項目中分離出一個函數。

所以這行代碼實際上是不正確的。

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. 
} 
相關問題