Javascript Dart JSONP回调错误
我目前正在尝试使用JSONP接收数据。当我击中 我得到的回答非常好:Javascript Dart JSONP回调错误,javascript,callback,dart,Javascript,Callback,Dart,我目前正在尝试使用JSONP接收数据。当我击中 我得到的回答非常好: callbackForJsonpApi({RESPONSE HERE}) 但当我去的时候,我得到: 有人能解释为什么我在一个回答前面加了“类型”部分,而在另一个回答前面没有 这是my site.dart文件: void main() { // listen for the postMessage from the main page window.onMessage.listen(dataReceived);
callbackForJsonpApi({RESPONSE HERE})
但当我去的时候,我得到:
有人能解释为什么我在一个回答前面加了“类型”部分,而在另一个回答前面没有
这是my site.dart文件:
void main() {
// listen for the postMessage from the main page
window.onMessage.listen(dataReceived);
ScriptElement script = new Element.tag("script");
script.src = "https://api.forecast.io/forecast/APIKEY/37.8267,-122.423?callback=callbackforJsonApi";
document.body.children.add(script);
}
dataReceived(MessageEvent dataReceived) {
var data = JSON.parse(dataReceived.data);
print(data['responseData']);
}
这是我的部分html:
<html>
<body>
<script type="text/javascript">
function callbackForJsonpApi(s) {
var data = JSON.stringify(s);
window.postMessage(data, '*');
}
</body>
</html>
函数callbackForJsonpApi(s){
var data=JSON.stringify;
window.postMessage(数据“*”);
}
我无法解释为什么它们不同;谷歌似乎有点疏忽(想必他们应该是一样的)
两者都是有效的;但是有额外支票的那张看起来最好;它只在函数存在(并且是函数)时才尝试调用该函数;如果尚未声明函数,将停止JavaScript错误
如果你在服务器端把它拉进来,然后把代码吐到你的页面上;您可能应该尝试让您的代码能够容忍这两种情况;以防万一你将来会有不同的行为(例如,如果谷歌让这些行为保持一致)。看起来你从不同的服务器得到了不同的响应,那么这不只是服务器配置不同的问题吗?这听起来不像是JavaScript或Dart相关的问题,而是完全在服务器上。如果未定义
callbackforJsonApi
函数,则后者似乎在保护调用以避免出现错误,然后它将不执行任何操作,而不是抛出异常。这是“非标准的”(不是JSONP有一个标准,但它不是传统的),但如果解释为JavaScript,它应该是安全的。所以在我这方面,我只能要求他们改变如何处理它?基本上,是的,如果你需要他们改变格式的话。我不知道您是如何获取或使用响应的。如果响应是以JavaScript运行的,那么无论如何都应该可以。它不能作为两种格式的普通Dart代码运行(顶级函数调用不是有效的Dart)。如果您将文本作为字符串接收,然后在以后使用它,则可以在使用它之前切断字符串的第一部分。这完全取决于您试图做什么。我在代码示例中添加了。我试着做黑客解决方案,基本上把所有的东西都删掉到&&。我只是不确定在什么时候我能做到……有什么见解吗?
<html>
<body>
<script type="text/javascript">
function callbackForJsonpApi(s) {
var data = JSON.stringify(s);
window.postMessage(data, '*');
}
</body>
</html>