2014-01-23 4 views
0

Я довольно долго борюсь с вопросом, и я не могу найти ответ. Я использую Script # с jQuery. В Script # я определил следующие функции:Функция вызова в jQuery из ответа AJAX

(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, Script # не поддерживает прямой ввод.

ответ

0

Похоже, это было не так сложно. Возврат Код Javascript:

$(function(){ Scrn.openSuccess("test");doucment.title="foo page"; }); 
0

Вы должны создать Аякс как функция, которая может вызываться из других областей

(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() 
+0

Привет, я отредактировал OP, пожалуйста, введите свой ввод в соответствии с ним. – MusicDemon

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-адрес) и заменил его на вызов.

+0

Привет, я отредактировал OP, пожалуйста, дайте свой вклад в соответствии с ним. – MusicDemon

Смежные вопросы