У меня возникла проблема с этим фантастическим плагином jqgrid и моей попыткой использовать его с службами данных WCF (не очень, но очень похожими службами odata4j). Кстати, если кто-то думает об использовании jqgrid с услугами odata, пожалуйста, пришлите мне строку, я нашел ответы на сложные вопросы, например, как настроить grid xmlreader для чтения структуры xata odata, которая побеждает в поиске пространства имен jquery вопрос ( намеков:JQGrid с службами данных WCF (OData); loadBeforeSend не вызывается в режиме редактирования; Не могу сделать setRequestHeader
включает jquery.xmlns.js
.....
$.xmlns.m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
$.xmlns.d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
.....
var feedXmlReaderOptions = {
root: "feed",
row: "entry",
repeatitems: false,
id: "feed>entry>id"
};
....
colModel: [
{
name: "clmNumKey",
index: "clmNumKey",
width: 150,
xmlmap: "d|clmNum",
editable: true
}
....
)
Во всяком случае, вопрос заключается в том, что OData услуге нужна метод, который обращается к операции редактирования (DELETE, PUT, MERGE) для отправки в качестве заголовка пользовательского запроса на обычный POST, а не HTTP-метод. Причина в том, что большинство брандмауэров не разрешают PUT и DELETE http me потому что вы можете, например, размещать на сервере новые файлы, а также удалять файлы, если вы можете угадать допустимый путь. Длинная история короткая ... событие loadBeforeSend не запускается для встроенного редактирования формы или формы ... Я вижу, что он запускается при полном запросе данных в сетке, но я получаю только событие , вызванное, когда я отправляю из редактирования форма. Я волнуюсь, потому что я вошел в исходные файлы jqgrid (grid.formedit.js
, grid.inlineedit.js
), и я не смог получить никаких хитов с ключевыми словами beforesend, там отображается только serializeeditdata. Я что-то упустил? Есть ли другой способ установить нужные заголовки на объекте ajax xhr
, который использует сетка? Это объект xhr
, выставленный сеткой? не
Ниже у вас есть код, я должен обрабатывать события редактировать ... опять же, loadBeforeSend не запускается ...
Спасибо заранее, Serban
$.extend($.jgrid.edit, {
closeAfterEdit: true,
closeAfterAdd: true,
ajaxEditOptions: {
contentType: "application/json"
},
mtype: 'POST',
loadBeforeSend: function(xhr)
{
xhr.setRequestHeader("X-HTTP-Method", "MERGE");
return xhr;
},
serializeEditData: function (data) {
delete data.oper;
return JSON.stringify(data);
}
});
Олег, ты рок дружище! Это сработало, и теперь я получил свой заголовок запроса, где хотел. Еще раз спасибо. – nenea
@ user1352052: Добро пожаловать! Если проблема решена, вы можете ["принять"] (http://meta.stackexchange.com/a/5235/147495) ответ. С наилучшими пожеланиями! – Oleg