Javascript jsonp函数未定义
html与问题无关,标记被追加,json返回就在调用之后,控制台告诉我callbackF未定义?为什么呢 为什么呢 因为您需要在闭包之外定义Javascript jsonp函数未定义,javascript,jsonp,Javascript,Jsonp,html与问题无关,标记被追加,json返回就在调用之后,控制台告诉我callbackF未定义?为什么呢 为什么呢 因为您需要在闭包之外定义callbackF函数: (function () { function callbackF(data) { eval(data.script); } window.onload = function () { if (url.indexOf('.html') > 0) {
callbackF
函数:
(function () {
function callbackF(data) {
eval(data.script);
}
window.onload = function () {
if (url.indexOf('.html') > 0) {
var gt_widget_id = document.createElement('div');
gt_widget_id.setAttribute('id', 'gt_widget_0');
var comments = document.getElementById('comments');
comments.parentNode.insertBefore(gt_widget_id, comments);
var comments = document.getElementById('comments');
var script = document.createElement('script');
script.setAttribute('src', "http://dev.example.com/wp/wpregister.asp?callback=callbackF&ver=2.5&url=" + encoded_url);
script.setAttribute("type", "text/javascript");
script.setAttribute("id", "grazit_script");
document.getElementById("gt_widget_0").parentNode.appendChild(script);
}
}
})();
function callbackF(data) {
eval(data.script);
}
(function () {
window.onload = function () {
if (url.indexOf('.html') > 0) {
var gt_widget_id = document.createElement('div');
gt_widget_id.setAttribute('id', 'gt_widget_0');
var comments = document.getElementById('comments');
comments.parentNode.insertBefore(gt_widget_id, comments);
var comments = document.getElementById('comments');
var script = document.createElement('script');
script.setAttribute('src', "http://dev.example.com/wp/wpregister.asp?callback=callbackF&ver=2.5&url=" + encoded_url);
script.setAttribute("type", "text/javascript");
script.setAttribute("id", "grazit_script");
document.getElementById("gt_widget_0").parentNode.appendChild(script);
}
}
})();
或者,您可以在窗口
范围上定义callbackF
函数,以便从闭包外部访问该函数:
(function () {
function callbackF(data) {
eval(data.script);
}
window.onload = function () {
if (url.indexOf('.html') > 0) {
var gt_widget_id = document.createElement('div');
gt_widget_id.setAttribute('id', 'gt_widget_0');
var comments = document.getElementById('comments');
comments.parentNode.insertBefore(gt_widget_id, comments);
var comments = document.getElementById('comments');
var script = document.createElement('script');
script.setAttribute('src', "http://dev.example.com/wp/wpregister.asp?callback=callbackF&ver=2.5&url=" + encoded_url);
script.setAttribute("type", "text/javascript");
script.setAttribute("id", "grazit_script");
document.getElementById("gt_widget_0").parentNode.appendChild(script);
}
}
})();
function callbackF(data) {
eval(data.script);
}
(function () {
window.onload = function () {
if (url.indexOf('.html') > 0) {
var gt_widget_id = document.createElement('div');
gt_widget_id.setAttribute('id', 'gt_widget_0');
var comments = document.getElementById('comments');
comments.parentNode.insertBefore(gt_widget_id, comments);
var comments = document.getElementById('comments');
var script = document.createElement('script');
script.setAttribute('src', "http://dev.example.com/wp/wpregister.asp?callback=callbackF&ver=2.5&url=" + encoded_url);
script.setAttribute("type", "text/javascript");
script.setAttribute("id", "grazit_script");
document.getElementById("gt_widget_0").parentNode.appendChild(script);
}
}
})();
六羟甲基三聚氰胺六甲醚。。谢谢Darin,我以为你只回答asp.NETMVC问题..我会试试你的方法。是因为我将整个方法包装在一个闭包中吗?是的,是因为您将整个方法包装在一个闭包中,这意味着只能从这个闭包内部调用这个函数。除了您从未在闭包内调用此函数。您正在调用一个服务器端端点,该端点返回本身正在调用函数的JSONP。而且,不,我不是只回答ASP.NET MVC问题。