2015-02-13 2 views
0

Имейте структуру кода:Javascript Объект инициализации не работает

SkillEidt.js (Javascript Файл):

    var SkillEdit = ({ 

        _designtemplate: ["", "input", "dropdownlist", "checkbox"], 
        _designTemplateData: {}, 


        readValue: function() { 
         /* when try to read value from customer.Html it's null */ 
         return this._designTemplateData;; 
        }, 

        RequestResponse: function (data) { 
          /* able to get and set value from ajax call */ 
          this._designTemplateData = data; 
         }, 

        ajaxCall : function() { 
         $.ajax({ 
         url: "/VendorDetails/GetVendorDetails", 
         type: "POST", 
         async: true, 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         error: function (result) { 
         alert(result.statusText); 
         }, 
         success: function (result) { 
          requestReponse(result); 
         } 
        }); 
       }); 

SkillEdit.ajaxCall() /* very important to set _designTemplateData data */ 

Customer.Html (страницы):

   <script src="~/Scripts/SkillEdit.js"></script> 
       <script type="text/javascript"> 
       function SomeBuuttonClickEvent() { 
        var notAbleToGetValue = SkillEdit.readValue(); 
       } 
       </script> 
    ------------------------------------------------------------------------ 

При отладке и см. SkillEdit.ajaxCall() вызовет метод ajaxCall() и при успешном вызове вызовет RequestResponse и установит _designTemplateData. Но когда я нажимаю кнопку (SomeBuuttonClickEvent) на Customer.Html, страница readValue возвращает нулевое значение. Как я могу установить данные _designTemplateData. ..

Добавлена ​​функция $ .ajax. Как SLOVE проблему с помощью любого из раствора

What code to be added

Какой код нужно записать внутри:

RequestResponse: функция (данные) или ajaxCall: функция()

+0

NOP. Я уже правильно задал значение в RequestResponse. – Vinod

+0

Например: из ajaxCall возвращается «HelloWorld». Устанавливаю то же самое в этом ._designTemplateData. Когда я читаю из var notAbleToGetValue = SkillEdit.readValue(); я должен получить «HelloWorld» – Vinod

+0

Да. Я использовал ваш комментарий. Еще одна проблема. – Vinod

ответ

1

Пожалуйста, попробуйте это. SkillEdit.js

var SkillEdit = function(){ 

    _designtemplate= ["", "input", "dropdownlist", "checkbox"], 
    _designTemplateData= {}, 


    readValue = function() { 
     $('#templabel').text(_designTemplateData); 
     return _designTemplateData; 
    }, 

    RequestResponse = function (data) { 
     debugger; 
     return _designTemplateData = data; 
    }, 

    ajaxCall= function() { 
     //return this.RequestResponse(["12", "13"]); 
     $.ajax({ 
      url: "/Home/GetVendorDetails", 
      type: "POST", 
      async: true, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      error: function (result) { 
       alert(result.statusText); 
      }, 
      success: function (result) { 
       RequestResponse(result); 
       console.log(result); 
      } 
     }); 
    } 

    return { 
     readValue: readValue, 
     RequestResponse: RequestResponse, 
     ajaxCall : ajaxCall 
    } 
}(); 

В ViewPage:

<script src="~/js/SkillEdit.js"></script> 
<label id="templabel"></label> 
<input type="button" value="stake overflow question" onclick="return SkillEdit.ajaxCall();"/> 
<input type="button" value="read Value answer" onclick="return SkillEdit.readValue();" /> 

В контроллере:

[HttpPost] 
     public ActionResult GetVendorDetails() 
     { 
      return Json("[12,13]"); 
     } 

picture with answer

+0

Спасибо за ответ. Да, он работает, когда мы пытаемся сделать в соответствии с вашим образцом. Попробуйте позвонить на страницу Customer.Html. он не будет работать (обновил ajax для проблемы) – Vinod

+0

WelCome.I обновил свой ответ и попробовал также его работу, значение также попадает на страницу html. –

+0

Еще раз спасибо за решение проблемы. Можете ли вы поделиться ссылкой или ссылкой, как вы решили проблему. Это помогает увеличить мою кривую обучения. – Vinod

0

Кажется, что ваш код работает: (запустите его ниже)

var SkillEdit = { 
 

 
     _designtemplate: ["", "input", "dropdownlist", "checkbox"], 
 
     _designTemplateData: {}, 
 

 
    readValue: function() { 
 
     return this._designTemplateData;; 
 
    }, 
 

 
    RequestResponse: function (data) { 
 
     this._designTemplateData = data; 
 
    }, 
 

 
    ajaxCall : function() { 
 
     this.RequestResponse("test successful"); 
 
    } 
 
}; 
 

 
SkillEdit.ajaxCall() 
 
    
 
alert(SkillEdit.readValue()) // Should alert "Test successful"

Ваша ошибка может быть в обработке вашего ответа ajax.

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