JQuery AJAX УДАЛИТЬ проблему - PullRequest
1 голос
/ 01 ноября 2010

Есть идеи, почему это не передает значение формы 'id'?

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" language="javascript">
   var deleteUser = function () {
   var id = this.id.split('lnk_delete_user_')[1];
   console.log(id); //prints frickin "2"
   $.ajax({
     type: "DELETE", url: '<%= Url.Action("DeleteUser") %>', data: "id=" + id,
     success: function (data) {
     window.location.href = '<%= Url.Action("Users") %>'
    }
   });
   };
   $(function ($) { $("a[id^=lnk_delete_user_]").confirm().click(deleteUser); });
</script>

Сторона сервера не получает аргумент 'id'.Что может быть не так?

Проверял ли это прямо перед $.ajax(...) идентификатор равен 2.

Попытка переписать data: "id="+id, в data: {id:id}, ничего не меняется.как выглядит мое действие:

[HttpDelete]
[Authorize(Roles="admin")]
public ActionResult DeleteUser(string id){
  //does not get even so far
}

Ответы [ 3 ]

4 голосов
/ 01 ноября 2010

На данный момент вам нужно POST, а не DELETE, например:

$.ajax({
  type: "POST", 
  url: '<%= Url.Action("DeleteUser") %>', 
  data: { id: id },
  success: function (data) {
    window.location.href = '<%= Url.Action("Users") %>'
  }
});

jQuery не будет правильно сериализовать параметры данных для запросов DELETE до 1.4.4, уже есть исправление для этого ... поэтому, если вы можете дождаться выпуска исправления ошибок jQuery 1.4.4 , это должно быть решено.

2 голосов
/ 01 ноября 2010

В вашем скрипте переменная id javascript не определена. Также я бы порекомендовал вам использовать хэш данных вместо конкатенации строк, так как это обеспечит правильную кодировку:

$.ajax({
    type: 'DELETE', 
    url: '<%= Url.Action("DeleteUser") %>', 
    data: { id: '123' },
    success: function (data) {
        window.location.href = '<%= Url.Action("Users") %>';
    }
});

Где ваше действие контроллера выглядит так:

[HttpDelete]
public ActionResult DeleteUser(string id)
{
    throw new NotImplementedException();
}

UPDATE:

Кажется, проблема в том, что вы используете jquery отсюда: http://code.jquery.com/jquery-latest.min.js

Когда вы включаете его из Google CDN, он работает нормально:

http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js

0 голосов
/ 01 ноября 2010

Если id является вашим значением внутри вашего ASP-скрипта, используйте это:

$.ajax({
type: 'DELETE', 
url: '<%= Url.Action("DeleteUser") %>', 
data: { id: <%= id %> },
success: function (data) {
    window.location.href = '<%= Url.Action("Users") %>';
}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...