2010-02-27 3 views
0

У меня проблема с обратным вызовом. Я даже не ошибаюсь в Firebug. Если я предупреждаю до и после вызова getjson, оба предупреждения показывают, но вызов getjson не срабатывает.getJSON не работает, если контроллер представления модели mvc имеет параметр

public ActionResult TestPage() 
    { 

     return View(); 
    } 

public ActionResult LoadMapLonLats(int mapId) 
    { 
     //some code 
     return Json(_myMaps); 
    } 


$("#Search").click(function() { 
     $.getJSON("LoadMapLonLats", { mapId: 73 }, loadDbMap); 
    }); 

    function loadDbMap(maps) { 
     alert('m'); 
     $.each(maps, function(i) { 
      alert(maps[i]); 
     }); 
    } 

До тех пор, пока я оставляю TestPage без параметра, работает. Если я добавлю параметр в TestPage (int id), тогда обратный вызов LoadMapLonLats не будет работать. Кажется странным. Конечно, TestPage - это страница, которую я загружаю, поэтому мне нужно сделать некоторую работу здесь, прежде чем отображать страницу. Не знаю, почему добавление параметра в представление приведет к поломке обратного вызова другой функции.

//this breaks he callback to LoadMapLonLats 

public ActionResult TestPage(int id) 
    { 

     return View(); 
    } 

Любые идеи? Похоже, это может быть связано, если не жалко, я могу опубликовать новую тему.

+0

Используйте firebug и проверьте вкладку net. Вероятно, вы найдете там проблему. –

ответ

1

попробуйте установить результат возврата в сигнале действия как JsonResult вместо ActionResult.

public JsonResult LoadMapLonLats(int mapId) 
    { 
     //some code 
     return Json(_myMaps); 
    } 

Имея еще взглянуть на это, я подозреваю, что проблема может быть связана с изменениями в отношении GET звонков в результате JSON в MVC 2.

http://haacked.com/archive/2009/06/25/json-hijacking.aspx

В основном вам нужно изменить позвоните по номеру $.post() и введите AcceptVerbs, чтобы позвонить по телефону POST.

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