2016-07-06 52 views
3

我試圖使用從網上API的Ajax請求與jQuery和獲取值,使轉換器歐元兌美元獲得JSON:試圖從網上api.fixer.io

http://api.fixer.io/latest?base=EUR 

現在我只能儘量去看看該調用完成並從鏈接中成功返回JSON。我的代碼:

$(document).ready(function() { 
 
    $("#idButton").click(function() { 
 
    $.ajax({ 
 
     type: "GET", 
 
     url: "http://api.fixer.io/latest?base=EUR", 
 
     data: {}, 
 
     succes: function(result) { 
 
     data = JSON.parse(result); 
 
     //$("#idUsd").val(); 
 
     console.log(data); 
 

 
     }, 
 
     error: console.log("dsfhg") 
 
    }); 
 
    }); 
 
});
body { 
 
    background-color: #808080; 
 
} 
 
.myEuro { 
 
    display: block; 
 
    margin-bottom: 10px; 
 
    padding: 10px; 
 
} 
 
#idButton { 
 
    color: #fff; 
 
    border: none; 
 
    background-color: #483D8B; 
 
    padding: 10px; 
 
    font-size: 15px; 
 
} 
 
.classTF { 
 
    display: block; 
 
    margin-bottom: 10px; 
 
    padding: 10px; 
 
}
<!DOCTYPE HTML> 
 
<html> 
 

 
<head> 
 
    <title>Demo 2</title> 
 

 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.js"></script> 
 

 
</head> 
 

 
<body> 
 

 
    <form class="myForm" id="form"> 
 

 
    <input type="text" name="from" placeholder="Euro/s" class="classTF"> 
 

 
    <input type="text" name="to" placeholder="USD" class="classTF" id="idUsd"> 
 
    <button type="submit" name="button" id="idButton">Convert into USD</button> 
 

 

 
    </form> 
 
    <script type="text/javascript"> 
 
    </script> 
 
</body> 
 

 
</html>

在我的控制檯它的印刷

dsfhg 

這意味着我得到了一個錯誤。但我不知道我做錯了什麼。誰能幫我?

+0

你有'success' –

+0

一個錯字現在我收到未捕獲的SyntaxError:意外的標記?在JSON在位置1 –

+0

檢查我的答案與提琴。你不需要解析響應。 –

回答

1
$.ajax({ 
    type: "GET", 
    url: "https://api.fixer.io/latest?base=EUR", 
    data: {}, 
    success: function(result) { // success mispelled 
    console.log(result); // jQuery was autoparse json response 
    }, 
    error: function(x, e) { console.log(e); } // must be function, not implicit call 
}); 

Fiddle

+0

現在我在console.log(result)後添加了一個新行:$(「#idUsd」)。val(parseInt(data ['rates'] ['USD' ])* parseInt($(「#idEur」)。val()));它會給出錯誤:未捕獲的引用錯誤:未定義數據。 –

+0

'數據未定義'表示您沒有'data'變量。使用'result.rates.USD' –

1

In my console it's printed dsfhg meaning I got an error. But I don't know what I did wrong.

您沒有正確指定錯誤處理程序。你在做什麼 給它一個功能執行結果,而不是一個功能 本身。這裏發生的事情:

$.ajax({ 
    // ... rest of the code 
    error: console.log("dsfhg") 
}); 

當這段代碼被調用,它會先調用console.log,因爲每當JS引擎遇到類似f()一個函數被調用 - >通知()

調用console.log返回undefined,然後這就是error在您傳遞給ajax的對象中的值。

換句話說,有什麼要傳遞到AJAX是:

$.ajax({ 
    // ... rest of the code 
    error: undefined // with console.log('dsfhg') called to return this `undefined` 
}); 

這意味着,無論你收到的數據;當您點擊按鈕,console.log('dsfhg')總是叫,因爲你打電話它在你將東西傳遞給ajax之前,這意味着你將不會有錯誤處理程序。

什麼你可能打算通過爲錯誤處理程序是這樣的:

$.ajax({ 
    // ... rest of the code 
    error: function() { 
    console.log("dsfhg"); 
    } 
}); 

現在,如果你遇到一個錯誤,你可能要記錄傳遞到錯誤處理程序中的數據,以幫助您進一步確定發生了什麼:

$.ajax({ 
    // ... rest of the code 
    error: function(jqXHR, textStatus, errorThrown) { 
    console.log(errorThrown); 
    } 
}); 

和當然,只要不知道,research how to do stuff


此外,由vp_arth在評論中指出的那樣,你拼錯successsucces,這將無法正常工作,你需要它意味着它不會被調用時,AJAX調用成功的方式。你會需要這樣的:

$.ajax({ 
    // ... rest of the code 
    success: // ... not succes 
}); 
+0

我改變了它,並打印相同的東西。 –

+0

那麼這意味着你有一個錯誤:) – nem035

+0

好吧,那麼如何解決它?去成功的部分 –