alert(data.name);
不会返回数据对象的名称,但 alert(data.price);
返回价格并继续返回价格,无论我传递什么参数来提醒。我正在尝试找出原因。如果您有任何想法,请分享。我对这种有趣但看似不透明且难以调试的语言(即 JS/JQ)完全陌生。
我正在前端运行以下代码以接受用户的股票代码。最初,alert();
包含 alert(data.price);
,它显示股票的价格。我将其更改为 alert(data.name);
并且仍然得到价格。然后我将其更改为 alert('hello');
,它返回了另一个(正确的)股票价格。
前端:
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script>
/*global $*/
/**
* Gets a quote via JSON.
*/
function quote()
{
var url = '/quote?symbol=' + $('#symbol').val();
$.getJSON(url, function(data) {
alert(data.name);
});
}
</script>
<title>ajax0</title>
</head>
<body>
<form onsubmit="quote(); return false;">
<input autocomplete="off" autofocus id="symbol" placeholder="Symbol" type="text"/>
<input type="submit" value="Get Quote"/>
</form>
</body>
</html>
在后端,我正在运行以下代码。它应该为我提供一个 JSON 对象,让我可以通过点表示法访问股票的名称、价格等。
后端:
import csv
import os
import urllib.request
from flask import Flask, jsonify, render_template, request
from flask.exthook import ExtDeprecationWarning
from warnings import simplefilter
simplefilter("ignore", ExtDeprecationWarning)
from flask_autoindex import AutoIndex
app = Flask(__name__)
AutoIndex(app, browse_root=os.path.curdir)
@app.route("/quote")
def quote():
url = "http://download.finance.yahoo.com/d/quotes.csv?f=snl1&s={}".format(request.args.get("symbol"))
webpage = urllib.request.urlopen(url)
datareader = csv.reader(webpage.read().decode("utf-8").splitlines())
row = next(datareader)
return jsonify({"name": row[1], "price": float(row[2]), "symbol": row[0].upper()})
最佳答案
尝试将数据转换为 Javascript 对象,因为它是从后端作为 JSON 传递的,如下所示:
$.getJSON(url, function(data) {
var resp = JSON.parse(data);
console.log(resp)
alert(resp.name);
});
如果这不起作用,请从控制台注释相应内容。
关于javascript - 从 JSON 对象检索新数据不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43075524/