2015-11-10 3 views
2

я ActionResult нижеJavascript оприходование массив отображения синтаксиса неправильно

[HttpPost] 
public ActionResult AddRoomFeature(string[] selectedFeatures, int RoomID) 
{ 
    return View(); 
} 

Javascript Ajax

var selectedFeatures = []; 

$('input.Hotelfeature:checkbox:checked').each(function() { 
    selectedFeatures.push($(this).val()); 
}); 

$.ajax({ 
    type: 'POST', 
    url: '@Url.Action("AddRoomFeature", "HotelRoom")', 
    data: { 
     selectedFeatures: JSON.stringify(selectedFeatures), 
     RoomID: $("#RoomID").val() 
    }, 
    success: function (data) { 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     alert("error"); 
    } 
}); 

Вопрос:

Если я отправляю selectedFeatures в ActionResult,

selectedFeatures отображает значение, как [ "\ 1", \ "2 \"]

значение Обычно должно отображаться как "1", "2" в массив строк.

Где я пропустил код ajax?

Любая помощь будет оценена по достоинству.

Спасибо.

ответ

1

SelectedFeatures получен как одно строковое значение, так как вы используете JSON.stringify в фактическом массиве перед отправкой запроса ajax. Когда вы делаете запрос ajax jQuery, вы можете указать данные, которые должны быть отправлены на сервер с помощью обычного объекта JavaScript. Ручная сериализация не требуется. Данные преобразуются в строку запроса или тело запроса. Тип контента по умолчанию: application/form-url-encoded.

Таким образом, чтобы работать ваш код должен стать:

var selectedFeatures = []; 

$('input.Hotelfeature:checkbox:checked').each(function() { 
    selectedFeatures.push($(this).val()); 
}); 

$.ajax({ 
    type: 'POST', 
    url: '@Url.Action("AddRoomFeature", "HotelRoom")', 
    data: { 
     selectedFeatures: selectedFeatures, // Note the missing JSON.stringify 
     RoomID: $("#RoomID").val() 
    }, 
    success: function (data) { 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     alert("error"); 
    } 
}); 
+0

Почти :). Параметр 'selectedFeatures' будет' null'. Вам нужно добавить параметр «традиционный: истинный», «ajax», чтобы сделать эту работу –

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