"success" и "failure" приём данных с сервера ???
Вопрос в передаче ошибки с сервера
Есть Панель на ней текстовые поля и кнопочка Сохранить, код:
var PanelData = new Ext.FormPanel({
url: 'Handlers/ХХХ.ashx?pid=' + pid + ...,
defaultType: 'textfield',
...
buttons: [{
text: 'Save',
handler:
function () {
PanelData.submit({
waitMsg: 'Loading...',
url: 'Handlers/ХХХ.ashx?pid=' + pid + ...,
success: function (form, action) { //true
}
failure: function (form, action) { //false
alert('Error!!!')
}
});
}
});
Когда с сервера пришло: true срабатывает success Когда с сервера пришло: false срабатывает failure Проблема в том, что надо отправить с сервера ошибку, что бы видеть что не так сработало на стороне Сервера. У меня срабатывает код только если приходит с Сервера чистые: Все хорошо: true Ошибка: false Гуглил, везде пишут, что надо отправлять данные с сервера так: Все хорошо: true или success
{ "success": "true"}
Ошибка: false или failure
{ "success": "false", "message": "Error message goes here." }
Например, если все хорошо и приходит "{ "success": "true"}", то срабатывает failure ((( Подскажите, пожалуйста, что не так делаю !!! |
Цитата:
Цитата:
|
Ex_Soft,
Во блин - с примера всё отлично сработало ..... |
С Вашего позволения ещё вопросик:
Загрузка файлов на сервер Ошибка, которую показывает консоль Хрома:
Uncaught Ext.Error: You're trying to decode an invalid JSON String: <pre style="word-wrap: break-word; white-space: pre-wrap;">{'success':false,'msg':'В стадии разработки!!!'}</pre>
То есть долбанный <pre в JSON String !!! Код Панели с полем для загрузки файлов на Сервер:
var PanelData = new Ext.create('Ext.form.Panel', {
title: 'Upload a Photo',
width: 400,
bodyPadding: 10,
frame: true,
items: [{
xtype: 'filefield',
name: 'photo',
fieldLabel: 'Photo',
labelWidth: 50,
msgTarget: 'side',
allowBlank: false,
anchor: '100%',
buttonText: 'Select Photo...'
}],
buttons: [{
text: 'Upload',
handler: function () {
PanelData.submit({
url: 'Handlers/ХХХ.ashx?pid=' + pid,
waitMsg: 'Uploading your photo...',
success: function (fp, o) {
Ext.Msg.alert('Success', 'Your photo has been uploaded.');
},
failure: function (form, action) {
switch (action.failureType) {
case Ext.form.action.Action.CLIENT_INVALID:
Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
break;
case Ext.form.action.Action.CONNECT_FAILURE:
Ext.Msg.alert('Failure', 'Ajax communication failed');
break;
case Ext.form.action.Action.SERVER_INVALID:
Ext.Msg.alert('Failure', action.result.msg);
}
}
});
}
}]
});
Гуглил ошибка с бородой, то есть извесный факт. Пробовал и вместо ContentType = "text/plain"; ставить ContentType = "application/json"; исправило ситуацию, но частично, то есть для некоторых браузеров срабатывает, для некоторых нет и типов файлов. Кто сталкивался подскажите что делать. Юзаю АСП.НЕТ 4.0 |
Цитата:
Код:
context.Response.ContentType = "text/html";Цитата:
|
Ex_Soft,
А это:
if (doc.body) {
if (/textarea/i.test((firstChild = doc.body.firstChild || {}).tagName)) { // json response wrapped in textarea
response.responseText = firstChild.value;
} else {
response.responseText = doc.body.innerHTML;
}
}
куда "вставить", если не секрет ? |
Цитата:
Улыбнуло... Это ж я Вам, так сказать, первоисточник, сиречь - исходник цицировал:Цитата:
|
Ключевой момент был:
context.Response.ContentType = "text/html"; |
Ну, дык:
Цитата:
|
| Часовой пояс GMT +3, время: 17:49. |