Discuss / JavaScript / refreshPrice这个名称可以自定义

refreshPrice这个名称可以自定义

Topic source

千年C

#1 Created at ... [Delete] [Delete and Lock User]

price.src= 'http://api.money.126.net/data/feed/0000001,1399001?callback=showPrice';的含义应该是将http://api.money.126.net/data/feed/0000001,1399001返回的结果传入回调函数showPrice()中, 然后showPrice()负责显示:

<!doctype>
<html>
<head>
<meta charset='utf-8'></meta>
<script>
//data即getPrice中price.src传入的返回结果, 是一个JSON字符串
function showPrice(data){
    var p=document.getElementById("test-jsonp");
    p.innerHTML="当前价格:"+
    data['0000001'].name +': ' + 
    data['0000001'].price + ';' +
    data['1399001'].name + ': ' +
    data['1399001'].price;
}

//点击"刷新"按钮时, 从'http://api.money.126.net/data/feed/0000001,1399001'请求JSON字符串,并把请求结果传给自定义函数showPrice()
function getPrice(){    
    var price=document.createElement('script');
    var head=document.getElementsByTagName("head")[0];
    price.src= 'http://api.money.126.net/data/feed/0000001,1399001?callback=showPrice';
    head.appendChild(price);
}
</script>
</head>

<body>
<p id="test-jsonp">placehoder</p>
<button type='button' onclick="getPrice()">刷新</button>
</body>
</html>

千年C

#2 Created at ... [Delete] [Delete and Lock User]

参考@小客人21

请问触发showPrice() 是因为在一个div下的原因么

明白了链接后面有一个callback=showPrice, 而返回的JSON格式的文件为showPrice({"0000001":{"code": "0000001"....}}) 直接触发showPrice的调用。

感谢这位兄弟的讲解,不然压根看不懂这节,以及反映不过来链接带了后缀?xxxx这个回调函数,算是涨知识了。

Swiftyxy13

#6 Created at ... [Delete] [Delete and Lock User]

服务器端应该是类似于这样一种实现:

String callback = request.getParameter("callback");
result = callback + "(" + result + ")";

  • 1

Reply