2014-10-12 7 views
0

Я знаю, что на этот вопрос был дан ответ, но я как-то не смог нанести удар по моему контроллеру.Как сделать вызовы AJAX

Вот Действие

public JsonResult GetUpdate() 
{ 
    //get a list of valid elements 
    var result = getContent(); 
    return Json(result, JsonRequestBehavior.AllowGet); 
} 

В моем сценарии:

$.ajax({ 
    type: 'GET', 
    url: '@Url.Action("GetUpdate")', 
    dataType: 'json', 
    success: function (constraints) { 
     alert("Application updated"); 
    }, 
    error: function (ex) { 
     alert('Failed to retrieve update.' + ex); 
    } 
}); 

Использование скрипача я могу ударить GetUpdate, но из браузера вызов Ajax не удается. Правильно ли я обращаюсь к URL?

Update: Ниже приводится сообщение об ошибке: "NetworkError: 404 Not Found - протокол: // локальный: port/Controller/@Url.Action (% 22GetUpdate% 22)"

следующие работы через Fiddle: протокол: // локальный: порт/контроллер/GetUpdate

+0

Попробуйте установить URL в 'GetUpdate'. Также обратите особое внимание на относительный путь. – Brandon

+0

Простите, что вы имеете в виду? как это сделать? Я думал, @ url.Action породил относительный путь ?! – user3320502

+0

Я думаю, что вам не хватает имени класса контроллера, в котором определено значение «GetUpdate» –

ответ

1

Бритва код (C# и все другие серверные скрипты) выполняется только из .cshtml файлов, поэтому C# и Бритва не могут быть использованы в .js файлах ,
'@Url.Action("GetUpdate")' не генерирует URL-адрес, это просто строка, поэтому вы пытаетесь запросить protocol://domain:port/[email protected]("GetUpdate"), который не существует.

Вот что вы можете сделать:

  • В файле .cshtml вы можете сохранить сгенерированный URL в переменной JavaScript и передать его во внешний файл JS.
  • Вы можете переместить свой внешний JavaScript в файл .cshtml, чтобы вы могли использовать Razor.
  • использовать относительный путь строку как /Controller/GetUpdate

Я бы рекомендовал первый.

0

Вы можете попробовать это, где _ApplicationPath является протокол: // локальный: порт/

 
$.ajax({ 
    type: 'GET', 
    url: _ApplicationPath + "/ControllerName/GetUpdate", 
    dataType: 'json', 
    success: function (constraints) { 
     alert("Application updated"); 
    }, 
    error: function (ex) { 
     alert('Failed to retrieve update.' + ex); 
    } 
}); 
Смежные вопросы