사용자가 텍스트 항목 목록에서 "편집"버튼을 클릭하면 해당 항목을 편집 할 수있는 상황을 만들려고합니다. 아약스를 사용하여 "편집"단추를 다시 게시하려고합니다.MVC 3 : jquery form.serialize가 내 양식의 모든 컨트롤을 선택하지 않는 이유는 무엇입니까?
$(function() {
// post back edit request
$('input[name^="editItem"]').live("click", (function() {
var id = $(this).attr('id');
var sections = id.split('_');
if (sections.length == 2) {
var itemID = sections[1];
var divID = "message_" + itemID;
var form = $("#newsForm");
$.post(
form.attr("action"),
form.serialize(),
function (data) {
$("#" + divID).html(data);
}
);
}
return false;
}));
});
그러나 form.serialize() 명령 양식의 모든 폼 컨트롤을 따기되지 않습니다
여기 내 아약스 코드입니다. 목록의 각 항목에 대해 표시되는 숨겨진 양식 필드 만 선택합니다. 그것은 숨겨진 양식 필드 (indexItemID)의 시리즈하지만 아무것도 따기 아니에요
**** this is the only control being picked up: ******
@Html.Hidden(indexItemID, j.ToString())
****
<div class="datetext" style="float: right; margin-bottom: 5px;">
@Model.newsItems[j].datePosted.Value.ToLongDateString()
</div>
@if (Model.newsItems[j].showEdit)
{
// *********** show the editor ************
<div id="@divID">
@Html.EditorFor(model => model.newsItems[j])
</div>
}
else
{
// *********** show the normal display, plus the following edit/delete buttons ***********
if (Model.newsItems[j].canEdit)
{
string editID = "editItem_" + Model.newsItems[j].itemID.ToString();
string deleteID = "deleteItem_" + Model.newsItems[j].itemID.ToString();
<div class="buttonblock">
<div style="float: right">
<input id="@editID" name="@editID" type="submit" class="smallsubmittext cancel" title="edit this item" value="Edit" />
</div>
<div style="float: right">
<input id="@deleteID" name="@deleteID" type="submit" class="smallsubmittext cancel" title="delete this item" value="Delete" />
</div>
</div>
<div class="clear"></div>
}
:
여기에 모든 항목을 표시하는 루프 내에서, 뷰의 코드입니다. 버튼 컨트롤을 선택하지 않는 이유는 무엇입니까?
(편집 버튼 컨트롤의 ID는 "editItem_x"형식으로되어 있습니다. 여기서 x는 항목의 ID입니다. 따라서 버튼 컨트롤은 전체 프로세스의 핵심입니다. 이는 사용자가 편집하고자하는 항목) 대답은 JQuery와 API 자체 것으로 보인다
UPDATE, http://api.jquery.com/serialize/ :.
"양식이 버튼을 사용하여 제출하지 이후 어떤 버튼 값이 직렬화 제출하지 . "
어떤 동작이 어떤 단추를 클릭했는지 알 수 없으므로 수동으로 단추를 직렬화 된 문자열에 추가하고 있으므로 작동하지 않는 것처럼 보입니다.
업데이트 2 내가 너무 빨리 말을
- 아약스 내 부분보기를 업데이트 작동하지 않습니다. 내 레이아웃 페이지의 섹션 중 하나가 정의되지 않았기 때문에 예외가 발생했습니다. 나는 포기합니다. 더 이상 시간을 낭비 할 수 없습니다. 이 프로젝트에는 Ajax가 없습니다.
아니, 그건 어떤 차이가되지 않습니다. 별표는 무엇을 의미합니까? – Cynthia
좋아요, 별표가 의미하는 것이 무엇인지 알았지 만 여전히 작동하지 않습니다! – Cynthia
내 업데이트를 참조하십시오! – Cynthia