2013-10-11 5 views
1

Может ли кто-нибудь сказать мне, почему я получаю сообщение об ошибке во второй строке, говоря «непредвиденная строка», но отлично работает, когда у меня есть это прямо на моем представлении (я использую MVC 3, а не то, что он делает разница):Ошибка Javascript только во внешнем файле

function getUsers(processId) { 
    $.ajax({ 
     url: "@Url.Action('GetProcessApprovers', 'Risk')", 
     data: { processId: processId }, 
     dataType: "json", 
     type: "POST", 
     error: function() { 
      alert("An error occurred."); 
     }, 
     success: function (data) { 
      var items = "<option value=\"\">-- Please select --</option>" 

      if (data != "") { 
       $.each(data, function (i, item) { 
        items += "<option value=\"" + item.Value + "\">" + item.Text + "</option>"; 
       }); 
      } 

      $("#ProcessOwnerId").html(items); 
     } 
    }); 
}; 
+3

Потому что ваш 'URL: "@ Url.Action ('GetProcessApprovers', 'Риск')",' выполняется только в контексте зрения , а не во внешнем JS-файле. Это код бритвы. –

+0

Спасибо, Рори. Готово. –

ответ

5

Поскольку ваш url: "@Url.Action('GetProcessApprovers', 'Risk')", выполняется только в контексте зрения, а не во внешнем файле JS. Это код бритвы.

Вам нужно передать URL-адрес Javascript каким-либо другим способом, возможно, в качестве параметра вашей функции.

getUsers(processId, ajaxUrl) 

Другим способом было бы выписать URL из HtmlHelper в атрибуте данных в вашей точки зрения, а затем забрать его в вашем JavaScript.

HTML

<div id="someContainer" data-url="@Url.Action('GetProcessApprovers', 'Risk')">... 

JS

var url = $("#someContainer").attr("data-url");

+0

конечно! Спасибо Джейми. – Wilky

+1

Если вы переходите по маршруту атрибутов данных, это должно быть просто '$ (" # someContainer "). Attr (" data-url ")', после этого вызов '.val()' не выполняется. –

+0

ах да. Обновлено спасибо. –

1

Ваш URL параметром является имеет вопрос. пожалуйста, измените его следующим образом:

url: '@Url.Action("GetProcessApprovers", "Risk")', 

Надеется, что это работает

+0

Это на самом деле хороший момент. Не уверен, что это единственная проблема здесь, но вам нужно использовать двойные кавычки в параметрах Action. Хорошо подмечено! – musefan

+0

Я обычно делаю, я просто возился с ним, пытаясь заставить его работать. та. – Wilky

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