我正在与一个问题作斗争很长一段时间,我无法找到答案。我正在使用带有jQuery的Script#。在Script#中我定义了以下函数:
(function($) {
////////////////////////////////////////////////////////////////////////////////
// Scrn
window.Scrn = function Scrn() {
}
Scrn.openSuccess = function Scrn$openSuccess(txt) {
/// <param name="txt" type="String">
/// </param>
$('#alrtS').css('display', 'block');
$('#alrtS span').html(txt);
}
Scrn.openModal = function Scrn$openModal(cap, txt) {
/// <param name="cap" type="String">
/// </param>
/// <param name="txt" type="String">
/// </param>
$('#frmModalLabel').html(cap);
$('#frmModalBody').html(txt);
$("#frmModal").modal("show");
}
Scrn.registerClass('Scrn');
})(jQuery);
从另一个脚本我发出一个AJAX请求,返回一个Javascript。
(function($) {
clsAJAX.fnAJAX = function clsAJAX$fnAJAX(hash) {
var sdata = {};
sdata.script = scrp;
sdata.page = true;
jqAO.data = sdata;
jqAO.dataType = 'script';
jqAO.cache = true;
jqAO.url = url;
jqAO.success = function(data, textStatus, request) {
};
$.ajax(jqAO);
}
})(jQuery);
我的问题是,Javascript如何调用jQuery函数中的代码?例如:服务器返回Javascript代码
Scrn.openSuccess("test");doucment.title="foo page";
然后我会收到函数Scrn.openSuccess不存在的错误。那么,返回的代码应该如何调用Scrn.openSuccess()?
至于为什么有很多奇怪的变量如jqAO,脚本#不支持直接输入。
答案 0 :(得分:0)
您必须将ajax创建为可以从其他范围调用的函数
(function ($) {
//create a named function reference in the global scope so that script in another scopes can use it
window.myAjax = function () {
var sdata = {};
sdata.script = scrp;
sdata.page = true;
jqAO.data = sdata;
jqAO.dataType = 'script';
jqAO.cache = true;
jqAO.url = url;
jqAO.success = function (data, textStatus, request) {};
$.ajax(jqAO);
}
myAjax();
})(jQuery);
然后在另一个脚本中调用
myAjax()
答案 1 :(得分:0)
所以,这是结果,我改变了代码的语法,更加面向对象,如果它们是对象方法,则不需要命名函数
(function($) {
// Scrn
window.Scrn = {
openSuccess : function(txt) {
/// <param name="txt" type="String">
/// </param>
$('#alrtS').css('display', 'block');
$('#alrtS span').html(txt);
},
openModal : function(cap, txt) {
/// <param name="cap" type="String">
/// </param>
/// <param name="txt" type="String">
/// </param>
$('#frmModalLabel').html(cap);
$('#frmModalBody').html(txt);
$("#frmModal").modal("show");
}
}
clsAJAXX = {
fnAJAX : function(hash,successHandler,errorHandler) {
// Data sent to server I guess
var sdata = {};
sdata.script = "";
sdata.page = true;
// Ajax request parameters
var jqAO = {};
jqAO.data = sdata;
jqAO.dataType = 'script';
jqAO.cache = true;
jqAO.url = "http://dummy.com/getmyscript.jsp";
jqAO.success = successHandler;
jqAO.error = errorHandler;
$.ajax(jqAO);
}
}
//Call
clsAJAXX.fnAJAX("myhash",Scrn.openSuccess,null);
})(jQuery);
DEMO:http://jsfiddle.net/AjYF2/ 这个演示展示了AJAX函数中成功处理程序的调用 - 这只是一个例子,因为我评论了Jquery Ajax调用(需要一个正确的url)并通过调用替换它。
答案 2 :(得分:0)
似乎并没有那么复杂。 返回的Javascript代码:
$(function(){ Scrn.openSuccess("test");doucment.title="foo page"; });