好的,所以我试图通过jsonp使用纯js(没有jquery / ajax)来获取数据。我不得不承认它已经有一段时间了,因为我已经走了纯粹的js路线所以我需要一些帮助。到目前为止,这是我的代码:
<div id = 'inforoll'></div>
<script type="text/javascript">
function blah(data){
var copy = '';
var len = data.length;
for(var i=0;i<len;i++){
nLine = data[i];
copy += '<li id="' + nLine.render_client + '">' + nLine['copy'] + '</li>'
}
document.getElementById('inforoll').innerHTML = copy;
}
</script>
<script type="text/javascript" src="http://example.com/example.js"></script>
尝试获取的jsonp数据示例:
blah.render_client({
"color": "blue",
"name": "bob"
}
抛出错误:
Uncaught TypeError:Object function Blah(data){
var copy='',
var len = data.length;
for(var i=0;i<len;i++){
nLine = data[i];
copy += '<li id="' + nLine.render_client + '">' + nLine['copy'] + '</li>'
}
document.getElementById('inforoll').innerHTML = copy;
}has no method 'render-client'
好的我明白了,我需要创建一个方法:
function blah(data){
this.render_client = This is where my brain stops working and I can't think of what to do next.
var copy = '';
var len = data.length;
for(var i=0;i<len;i++){
nLine = data[i];
copy += '<li id="' + nLine.render_client + '">' + nLine['copy'] + '</li>'
}
document.getElementById('inforoll').innerHTML = copy;
}
我只需要一些合乎逻辑的启示,所以我都是耳朵。谢谢所有人!
答案 0 :(得分:0)
在JSONP中加载一个脚本标记,该标记返回一个带有JSON对象作为参数的函数调用。期望是该功能已在页面上定义。原因是绕过通常阻止使用AJAX从其他域访问数据的Same Origin Policy,但允许您包含来自其他域的脚本标记。
好的,足够的说明,基于您的JSONP数据示例,您需要定义具有方法blah
的对象render_client
。一个非常基本的例子是:
<script type="text/javascript">
var blah = {
render_client: function(data) {
// data is the JSON object itself
var copy = '';
for(var prop in data){
copy += '<li id="' + prop + '">' + data[prop] + '</li>'
}
document.getElementById('inforoll').innerHTML = copy;
}
};
</script>
注意,在示例代码中,我将for
更改为for..in
,因为您正在迭代对象。为简单起见,我排除了hasOwnProperty
check,以排除您不关心的继承属性。