2016-07-13 2 views
0

У меня следующий код в моем файле Javascript:Ajax вызова не работает на сервере

$.getJSON("/ProductMatrix/LocationList/" + $("#categoryTypeFilter > option:selected").attr("value"), 
    function (data) { 
    var items = "<option> Default </option>"; 
    $.each(data, 
     function (i, location) { 
     items += "<option value=' " + location.Value + "'>" + location.Text + "</option>"; 
     }); 
    $("#captureLocationFilter").html(items); 
    }); 

"/ProductMatrix/LocationList/" является контроллер/действие, но он не работает на сервере, однако он работает на локальной машине. Похоже, что проблема связана с URL-адресом, поскольку этот путь может отсутствовать на сервере. Может кто-нибудь мне помочь.

Когда я пытаюсь использовать Url.Action, мой внешний файл javascript не радует.

enter image description here

+0

Пожалуйста, внимательно прочитайте ответ. 'Url.Action' - это серверный метод. Он не будет работать во внешних js-файлах. вам нужно создать url в вашем файле бритвы и передать его в свой js-код, как это четко объяснено в этом сообщении [Как мне узнать JS о корне приложения?] (http://stackoverflow.com/questions/34360537/how -do-i-make-js-know-about-the-application-root) – Shyju

ответ

0

Моя дикая догадка, что вы получаете ошибку 404. Проверьте консоль браузера.

Одно из предложений заключается в том, что не нужно указывать URL-адрес вашего метода действий. Всегда старайтесь использовать html-методы-помощники, например Url.Action или Url.RouteUrl, чтобы создать правильный относительный URL-адрес для вашего метода действий.

var url="@Url.Action("LocationList","ProductMatrix")"; 
var v=$("#categoryTypeFilter > option:selected").attr("value"); 
//update the url (add ? as needed) according to how your server expects the url params 
$.getJSON(url + v , function (data) {    
      //do something with data  
}); 

Это будет работать хорошо, если ваш Javascript код находится внутри зрения бритвы, если он находится внутри внешнего файла JavaScript, используйте решение объясняется в this answer.

+0

Я пробовал это, но, похоже, в моем внешнем файле javascript ему не нравится. Пожалуйста, найдите скриншот, указанный в описании вопроса. – Chanchal

+0

Внимательно прочитайте ответ. Для внешнего js-файла вы должны попробовать другой подход, упомянутый мной в ссылке – Shyju

+0

Невозможно ли без углового? – Chanchal