Ошибка ajax как исправить

I am trying to perform this AJAX post but for some reason I am getting a server 500 error. I can see it hit break points in the controller. So the problem seems to be on the callback. Anyone? $.aj...

Can you post the signature of your method that is supposed to accept this post?

Additionally I get the same error message, possibly for a different reason. My YSOD talked about the dictionary not containing a value for the non-nullable value.
The way I got the YSOD information was to put a breakpoint in the $.ajax function that handled an error return as follows:

<script type="text/javascript" language="javascript">
function SubmitAjax(url, message, successFunc, errorFunc) {
    $.ajax({
        type:'POST',
        url:url,
        data:message,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success:successFunc,
        error:errorFunc
        });

};

Then my errorFunc javascript is like this:

function(request, textStatus, errorThrown) {
        $("#install").text("Error doing auto-installer search, proceed with ticket submissionn"
        +request.statusText); }

Using IE I went to view menu -> script debugger -> break at next statement.
Then went to trigger the code that would launch my post. This usually took me somewhere deep inside jQuery’s library instead of where I wanted, because the select drop down opening triggered jQuery. So I hit StepOver, then the actual next line also would break, which was where I wanted to be. Then VS goes into client side(dynamic) mode for that page, and I put in a break on the $("#install") line so I could see (using mouse over debugging) what was in request, textStatus, errorThrown. request. In request.ResponseText there was an html message where I saw:

<title>The parameters dictionary contains a null entry for parameter 'appId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ContentResult CheckForInstaller(Int32)' in 'HLIT_TicketingMVC.Controllers.TicketController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.<br>Parameter name: parameters</title>

so check all that, and post your controller method signature in case that’s part of the issue

Can you post the signature of your method that is supposed to accept this post?

Additionally I get the same error message, possibly for a different reason. My YSOD talked about the dictionary not containing a value for the non-nullable value.
The way I got the YSOD information was to put a breakpoint in the $.ajax function that handled an error return as follows:

<script type="text/javascript" language="javascript">
function SubmitAjax(url, message, successFunc, errorFunc) {
    $.ajax({
        type:'POST',
        url:url,
        data:message,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success:successFunc,
        error:errorFunc
        });

};

Then my errorFunc javascript is like this:

function(request, textStatus, errorThrown) {
        $("#install").text("Error doing auto-installer search, proceed with ticket submissionn"
        +request.statusText); }

Using IE I went to view menu -> script debugger -> break at next statement.
Then went to trigger the code that would launch my post. This usually took me somewhere deep inside jQuery’s library instead of where I wanted, because the select drop down opening triggered jQuery. So I hit StepOver, then the actual next line also would break, which was where I wanted to be. Then VS goes into client side(dynamic) mode for that page, and I put in a break on the $("#install") line so I could see (using mouse over debugging) what was in request, textStatus, errorThrown. request. In request.ResponseText there was an html message where I saw:

<title>The parameters dictionary contains a null entry for parameter 'appId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ContentResult CheckForInstaller(Int32)' in 'HLIT_TicketingMVC.Controllers.TicketController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.<br>Parameter name: parameters</title>

so check all that, and post your controller method signature in case that’s part of the issue

Добрый вечер дорогие форумчане. Подскажите пожалуйста, почему при попытке отправить ajax запрос, у меня выскакивает alert из error??? Всю голову уже сломал, весь интернет уже перерыл.
2) И почему после того как я нажимаю ок в alert у меня перезагружается страница??

шаблон

{% extends "crm/main_struct.html" %}
{% load staticfiles %}

{% block content %}

<!--ОБЯЗАТЕЛЬНО СДЕЛАТЬ ФУНКЦИЮ НА JS КОТОРАЯ БУДЕТ ВЫЧИСЛЯТЬ ОТСТУПЫ И В НУЖНОЕ МЕСТО ПИХАТЬ КОНТЕНТ САЙТОВ-->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>

<script>
$(document).ready(function() {
  $('ul.tabs_m_w').each(function() {
    $(this).find('li').each(function(i) {
      $(this).click(function() {
        $(this).addClass('active').siblings().removeClass('active');
        var p = $(this).parents('div.tabs_container_m_w');
        p.find('div.tab_container_m_w').hide();
        p.find('div.tab_container_m_w:eq(' + i + ')').show();
      });
    });
  });
})
</script>
<a href="{{url}}/crm/my_work/new/" class="add_notebook_a">
    <div class="add_notebook">Добавить</div>
</a>
<div class="tabs_container_m_w">
  <ul class="tabs_m_w">
      {% for notebook in notebookList %}
        <li class="inl-bl_m_w">
            <div class="m_w_list_head">{{notebook.name}}</div>
            <div class="m_w_list_date">{{notebook.date_firstly}}</div>
            <div class="m_w_list_kr_info">{{notebook.kr_info}}</div>
        </li>
      {% endfor %}
  </ul>

    {% for notebook in notebookList %}
  <div class="tab_container_m_w">
      <a href="" onclick="resend({{notebook.id}});" class="a_tab">
          <div class="m_w_save">
            Сохранить
          </div>
      </a>
    <div class="m_w_info_head" id="name{{notebook.id}}" contentEditable="true">{{notebook.name}}</div>
      <div class="m_w_info_info" id="info{{notebook.id}}" contentEditable="true">{{notebook.information}}</div>
  </div>
{% endfor %}

</div>

<script>
    function resend(pk){
           var name = document.getElementById('name' + pk).innerHTML.trim().replace(/<.*?>/g, "");
           var info = document.getElementById('info' + pk).innerHTML.trim().replace(/<.*?>/g, "");
           edit(name, info, pk);
    }
</script>

<script>
function edit(name, info, pk) {
// Если поля заполнены, отправляем их значения
        $.ajax({
            error: function() {
                alert('Ошибка получения запроса');
            },
    // При успехе очищаем поля и меняем кнопочку
                success: function(data) {
                 alert("Успех"); // для проверки, что скрипт работает
                },
    // CSRF механизм защиты Django
                beforeSend: function(xhr, settings) {
                    console.log('-------------before send--');
                    function getCookie(name) {
                        var cookieValue = null;
                        if (document.cookie && document.cookie != '') {
                            var cookies = document.cookie.split(';');
                            for (var i = 0; i < cookies.length; i++) {
                                var cookie = jQuery.trim(cookies[i]);
                                // Does this cookie string begin with the name we want?
                            if (cookie.substring(0, name.length + 1) == (name + '=')) {
                                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                                break;
                            }
                        }
                    }
                    return cookieValue;
                    }
                    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
                        // Only send the token to relative URLs i.e. locally.
                        xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
                    }
                }
            });// ajax


        return false;
    };
</script>
{% endblock %}

urls.py

urlpatterns = patterns('',
    url(r'^my_work/edit/$', views.NBEdit, name='crm_edit_NB'),
)

views.py

def NBEdit(request):
    if request.is_ajax():
        for i in MyDela.objects.filter(pk=request.POST.get("id", "")):
            i.name = request.POST.get("name", "")[:250]
            i.information = request.POST.get("info", "")
            i.save()
        #  return HttpResponse("ok")
        return HttpResponseRedirect('/crm/sites/')
    else:
        #  return HttpResponse("bad")
        return HttpResponseRedirect('/crm/zayvki/')

Прошу не кидаться помидорами, я только учусь кодить))

This is a tutorial on how to handle errors when making Ajax requests via the jQuery library. A lot of developers seem to assume that their Ajax requests will always succeed. However, in certain cases, the request may fail and you will need to inform the user.

Here is some sample JavaScript code where I use the jQuery library to send an Ajax request to a PHP script that does not exist:

$.ajax({
     url: 'does-not-exist.php',
     success: function(returnData){
         var res = JSON.parse(returnData);
     },
     error: function(xhr, status, error){
         var errorMessage = xhr.status + ': ' + xhr.statusText
         alert('Error - ' + errorMessage);
     }
});

If you look at the code above, you will notice that I have two functions:

  • success: The success function is called if the Ajax request is completed successfully. i.e. If the server returns a HTTP status of 200 OK. If our request fails because the server responded with an error, then the success function will not be executed.
  • error: The error function is executed if the server responds with a HTTP error. In the example above, I am sending an Ajax request to a script that I know does not exist. If I run the code above, the error function will be executed and a JavaScript alert message will pop up and display information about the error.

The Ajax error function has three parameters:

  • jqXHR
  • textStatus
  • errorThrown

In truth, the jqXHR object will give you all of the information that you need to know about the error that just occurred. This object will contain two important properties:

  • status: This is the HTTP status code that the server returned. If you run the code above, you will see that this is 404. If an Internal Server Error occurs, then the status property will be 500.
  • statusText: If the Ajax request fails, then this property will contain a textual representation of the error that just occurred. If the server encounters an error, then this will contain the text “Internal Server Error”.

Obviously, in most cases, you will not want to use an ugly JavaScript alert message. Instead, you would create an error message and display it above the Ajax form that the user is trying to submit.

JQuery 3.0: The error, success and complete callbacks are deprecated.

Update: As of JQuery 3.0, the success, error and complete callbacks have all been removed. As a result, you will have to use the done, fail and always callbacks instead.

An example of done and fail being used:

$.ajax("submit.php")
  .done(function(data) {
      //Ajax request was successful.
  })
  .fail(function(xhr, status, error) {
      //Ajax request failed.
      var errorMessage = xhr.status + ': ' + xhr.statusText
      alert('Error - ' + errorMessage);
})

Note that always is like complete, in the sense that it will always be called, regardless of whether the request was successful or not.

Hopefully, you found this tutorial to be useful.

11: Обработка ошибок в JavaScript

Вы написали приложение JavaScript, и оно работает отлично — пока вы не получите сообщение об ошибке. Это нечто неприглядное, выскакивающее на экране, что-нибудь вроде ‘myObject.fields is null or not an object’. Что это значит? В этом уроке мы рассмотрим, как избавиться от ошибок, и покажем несколько различных методов для общей обработки ошибок.

Синтаксические ошибки

JavaScript имеет два основных уровня обработки ошибок: синтаксические ошибки и ошибки времени выполнения. Синтаксические ошибки возникают до выполнения кода JavaScript, означая в основном, что код невозможно компилировать. Возьмем, например, следующий код:

for(var i=0; i<10; i++)
  // рабочий код здесь 
}

Обратите внимание, что здесь пропущена открывающая скобка {. Если попробовать выполнить этот код, то немедленно появится сообщение об ошибке, даже если код находится в функции, которая не выполняется сразу. Такие ошибки почти всегда легко находятся и исправляются. В этом случае будет получено сообщение, говорящее что-нибудь подобное » Ожидалась ‘)’, строка 10, позиция 18«. Если перейти к строке 10, то там обычно будет находиться достаточно очевидная ошибка, такая, как пропущенная ), дополнительный знак <или какая-то другая опечатка. С такими ошибками ничего нельзя сделать, кроме как просто исправить и двигаться дальше. Ниже представлен список некоторых наиболее распространенных синтаксических ошибок:

  • Пропущенные или непарные фигурные, круглые или квадратные скобки

    Каждая фигурная {, круглая (, или квадратная [ скобка должна иметь свою закрывающую парную скобку. Если имеются вложенные скобки, то внутренние должны быть закрыты прежде, чем внешние. Например, набор скобок {[}] является недопустимым.

    Условия операторов if, for и while должны помещаться в круглые скобки. Выражнение «if x=5{» является недопустимым, так как «x=5» должно быть заключено в круглые скобки. Если с этим возникнут проблемы, то существуют редакторы, такие, как EditPlus, которые могут выделять соответствующие пары скобок, и т.д.

  • Пропущенные или непарные кавычки

    Это очень распространенная проблема. Строки в JavaScript начинаются символом или « и должны заканчиваться таким же символом. Если этот символ существует в строке, то он должен быть экранирован. Например, код

    var x = 'It's a beautiful day';
    

    является недопустимым, потому что в It’s не экранировано. Этот код должен выглядеть следующим образом:

    var x = 'It's a beautiful day';
    
    // или
    
    var x = "It's a beautiful day";
    

    Еще одной достаточно распространенной ошибкой является завершение строки другим символом, т.е.:

    var x = "It's a beautiful day';
    

    Эта строка начинается с символа «, поэтому должна закончиться также символом «.

  • Пропущенная точка с запятой

    Хотя точки с запятой обычно не нужны в JavaScript, но лучше все же их использовать. Например, если нужно сократить файл JavaScript, то обычно удаляют все переносы строк. Возьмем следующий код:

    Если удалить переносы строк, то получим код

    который вызовет ошибку. Если бы использовались точки с запятой, то проблемы не было бы.

Ошибки времени выполнения

Перейдем к ошибкам времени выполнения. После запуска кода на исполнение начинают появляться ошибки времени выполнения. Эти ошибки могут возникать в связи с множеством причин. Каждый из следующих далее блоков кода будет порождать ошибку:

alert(x); // 'x' не определено 

var x;

x[5] = 'test'; // 'x' будет null или не является объектом 


window.frames = 5; //  Не реализовано 


var for; // ожидается идентификатор 

document.doesNotExist(5);
// объект не поддерживает это свойство или метод 


alert(parseInt('5')); // ожидается объект 

Многие из этих проблем вызываются более общими ошибками, которые приходится разыскивать.

  • Неправильное использование прописных букв

    Все встроенные функции JavaScript используют специальную форму записи имен функций, предполагающую, что имя функции начинается со строчной буквы, а в начале каждого следующего слова будет использоваться прописная буква: parseInt, getElementById, createElement, appendChild, и т.д.

    Так как JavaScript учитывает регистр символов, то неправильный ввод имени одной из этих функций часто будет приводить к ошибке во время выполнения.

  • Ссылка на несуществующий код, функции или объекты DOM

    Эта проблема возникает обычно в отношении объектов DOM. Предположим, что имеется код, который изменяет некоторые элементы формы на странице. Если делается попытка выполнить этот код до появления элементов формы, например, если поместить его в тег <HEAD>, то будет получена ошибка JavaScript.

    Обычно эта проблема легко решается. Лучшим решением будет выполнение кода по событию onload, например:

    <BODY onload="loadFunction();">
    

    или еще лучше, присоединение события к загрузке тела.

  • Использование зарезервированного слова

    Существует длинный список зарезервированных ключевых слов JavaScript. Если делается попытка использовать многие из них вне их специального контекста, как, например, запись

    то будет возникать ошибка.

  • Использование пропущенного параметра

    При определении функции обычно используется некоторое количество аргументов. Если некоторые из этих аргументов пропущены и делается попытка их использовать, то возникнут ошибки.

Большинство из этих проблем попадают в категорию опечаток и просто обычных ошибок, которые можно исправить, но необходимо о них знать, чтобы случайно не сделать.

Однако последний тип ошибки из этого списка с пропущенными параметрами можно проверить достаточно легко:

function myFunction(a, b, c){
  if(a){
    // выполняется работа с a
  }
  if(b && c){
    // выполняется работа с b и c
  }
}

Если функция вызывается только с одной переменной, то проблемы не возникает. Однако надо помнить об одной вещи: если входящая по значению переменная может быть определена как false (0 или false), то код не будет работать. В связи с этим лучше проверять, что переменная не была определена:

function myFunction(a, b, c){
  if(typeof(a)!='undefined'){
    // выполнение кода с a
  }
  if((typeof(b)!='undefined') && (typeof(c)!='undefined')){
    // выполнение кода с b и c
  }
}

В этом случае, даже если одна из переменных будет передана как 0, false или null, код все равно будет работать.

Сейчас мы перейдем к изучению механизмов обработок ошибок — с помощью операторов Try/Catch и функции window.onerror.

window.onerror

Откровенно говоря, функция window.onerror имеет небольшую практическую пользу. Ее чаще всего используют для полного отключения всех сообщений об ошибках во время выполнения:

window.onerror = function(){
  return true;
}

С этим кодом сообщение об ошибке никогда не будет выводиться. Однако в связи с этим приложение может не работать. Например, если бы переменная была null и с ней была выполнена какая-то операция, то в обычной ситуации должно появиться сообщение об ошибке. При использовании этого кода функция или сценарий в случае возникновения ошибки будет просто молча останавливаться.

Функцию window.onerror можно также использовать для вывода пользователям несколько более дружественных сообщений об ошибках. Можно просто вывести, например, сообщение ‘Произошла ошибка, свяжитесь, пожалуйста, с Web-мастером’, вместо вывода пользователю всех технических деталей ошибки (что большинство браузеров делает по умолчанию).

Еще одно использование window.onerror состоит в отправке разработчику списка всех ошибок, произошедших на сайте. Можно использовать AJAX для отправки сообщений об ошибках в форме, чтобы можно было позже их исправить. Все это возможно сделать неявно, без взаимодействия с пользователем.

Try/Catch/Finally и Throw

Операторы Try/Catch являются несомненно наиболее распространенным и обычно лучшим способом реализовать обработку ошибок в JavaScript. Но не только это — операторы Try/Catch могут иногда быть единственным способом реализовать некоторые задачи, такие, как обнаружение объекта. Возьмем, например, простую функцию для создания в Internet Explorer объекта XMLHttp:

var activeXObjects = ['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
for(var i=0; i<activeXObjects.length; i++){
  try{
    return new ActiveXObject(activeXObjects[i]);
  }catch(err){}
}

Заранее неизвестно, какие объекты установил пользователь, и, к сожалению, браузер не предоставляет никакого механизма это определить. Поэтому остается создавать каждый из 6 возможных объектов, пока один из них (будем надеяться) не заработает.

Операторы Try/Catch можно использовать для перехвата ошибок двух типов: ошибок времени выполнения и ошибок пользователя. Ошибки времени выполнения, как говорилось ранее, возникают, когда у компилятора JavaScript существует проблема с созданным кодом. Ошибки пользователя, с другой стороны, будут технически проходить без проблем, но возникают в связи с контекстом приложения. Если имеется поле, в которое пользователь, например, должен ввести свой возраст, и пользователь вводит -2, то это приводит к появлению ошибки.

Блок Try/Catch имеет достаточно простой синтаксис:

try{
  // код 
}catch(err){
  // код обработки ошибки 
}

Если код в блоке try приводит к ошибке, то сценарий немедленно переходит в блок catch. Объект ошибки » err» в JavaScript имеет ряд полезных свойств — описание, сообщение, имя и номер, которые можно использовать для вывода информации о том, что произошло:

try{
  var x;
  x[5] = 5;
}catch(err){
  alert('An error occured: '+err.description);
}

Если в операторе catch окажется ошибка, то JavaScript сможет обратиться в дальнейшем к ее описанию.

Такой блок кода Try/Catch можно применять в любом месте. Однако, обычно, код должен быть написан таким образом, чтобы это не нужно было использовать, — в частности, весь ввод должен проверяться.

Блок Try/Catch можно применять также для создания своих собственных ошибок:

function setAge(x){
  if(typeof(x)=='undefined') throw('Вы должны ввести возраст');
  if(typeof(x)!='number') throw('Возраст должен быть числом');
  if(x<0) throw('Возраст не может быть меньше 0');
  if(x>120) throw('Возраст не может быть больше 120');

  var myAge = x;

  // еще код 
}

try{
  setAge(userInput);
}catch(err){
  alert(err);
}

В этом случае выполняется проверка того, что пользователь вводит возраст. Если он вводит недопустимые данные, сценарий немедленно завершается, а пользователь получает сообщение об ошибке.

Блок try/catch имеет еще одну часть, оператор «finally«:

try{
  // код 
}catch(err){
  // код 
}finally{
  // код 
}

Код в «завершающем блоке» будет выполняться независимо от того, что происходит с операторами Try/Catch. В чем же разница между завершающим блоком и простым размещением кода после блока try/catch? В большинстве случаев никакой разницы не будет. Однако, если блок try/catch находится в функции и происходит выход из функции в блоке try или catch, то возникнет существенное различие:

function myFunction(){
  try{
    return someValue;
  }catch(err){
    return defaultValue;
  }finally{
    alert('finally!');
  }

  alert('End!');
}

В этом случае оба блока try и catch возвращают значение. Мы получим сообщение «finally!«, но не получим сообщение «End!«, потому что произойдет выход из функции до сообщения alert(‘End!’). То же самое остается справедливым для операторов Try/Catch, которые осуществляют выход из тела цикла for или while, например:

for(var i=0; i<10; i++){
  try{
    if(i==5) continue;
  }catch(err){
    // обработка ошибки 
  }finally{
    // код 
  }

  // еще код 
}

Обработка ошибок в AJAX

Запросы XMLHttp, рассмотренные в предыдущей лекции, могут иметь совершенно другой тип ошибки: данные просто не проходят. Это можно проверить через статус объекта XMLHttp:

function processingFunction(){
  if(oXml.readyState!=4) return; // запрос не выполнен 

  switch(oXml.status){
    case 0: case 200:  // запрос выполнен 
      break;
    case 408: case 504: // запрос превысил время ожидания 
      // код 
      break;
    default: // ошибка запроса 
      // код
      return; // возможно, вы захотите выйти 
      break;
  }

  // продолжение обработки запроса 
}

oXml в этом примере является объектом XMLHttp, а функция processingFunction была присоединена к свойству onreadystatechange этого объекта.

Проверяя код статуса, мы узнаем, был ли запрос обработан успешно. Код 200 является в HTTP стандартным кодом статуса «Все прошло нормально» . Код 0 возникает при загрузке файлов из локальной файловой системы (если для этого есть соответствующие полномочия). Статус код 0 часто возникает при локальном тестировании приложения.

Коды статуса 408 и 504 представляют ситуацию с превышением времени ожидания. Очень часто это указывает на сетевые проблемы, и простое повторение запроса может разрешить проблему. Однако отметим, что эти коды представляют также слишком длительную работу сервера над ответом. Например, если существует ошибка сценария на сервере, которая приводит к бесконечному циклу, то может возникнуть код ошибки 408 или 504. В этом случае повторная попытка будет вредоносной, поэтому надо быть осторожным. Самым безопасным является уведомление пользователя и выход из функции, но это не очень корректно по отношению к пользователю.

Все другие коды ошибок имеют свои собственные значения, но в данной ситуации это не важно. Нас интересует только то, что мы не получили нужные данные. Поэтому если код попадает в область «default«, то мы имеем проблему. Наверно в этой ситуации лучше всего сообщить пользователю о проблеме и выйти из функции.

Это почти все об обработке ошибок в JavaScript. Имеет смысл включать в функции обработку ошибок, но, возможно, что это не требуется для каждой функции или каждого фрагмента кода. В большинстве ситуаций достаточно проверки ввода пользователей. Для реализации проверки пользователя наиболее полезным средством является использование блоков Try/Catch/Throw.

В следующей лекции будет рассмотрена рекурсия:

«Чтобы понять рекурсию, сначала необходимо понять рекурсию».

  1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Решение проблем

Главные вкладки

  • Просмотр(активная вкладка)
  • Реакции

Аватар пользователя wiom


12 января 2014 в 4:09


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

Возникла AJAX HTTP ошибка.
Полученный код HTTP: 200
Следует отладочная информация.
Путь: /system/ajax
Текст Состояния: OK
Текст Ответа: [{«command»:«settings»,«settings»:{«basePath»:«/«,«pathPrefix»:«»,«ajaxPageState»:
{«theme»:«seven»,«theme_token»:«2J3KowjLFRBatAqM6DA5Gftwh4MXFLJszqC2MgEY5Zk»},«quote_nest»:«2»,«ajax»:{«edit-fields-field-img-
settings-edit-form-actions-save-settings»
:{«callback»:«field_ui_display_overview_multistep_js»,«wrapper»:«field-display-overview-
wrapper»
,«effect»:«fade»,«event»:«mousedown»,«keypress»:true,«prevent»:«click»,«url»:«/system/ajax»,«submit»:
{«_triggering_element_name»:«field_img_formatter_settings_update»,«_triggering_element_value»:«u041eu0431u043du043eu0432u0438
u0442u044c»
}},«edit-fields-field-img-settings-edit-form-actions-cancel-settings»:
{«callback»:«field_ui_display_overview_multistep_js»,«wrapper»:«field-display-overview-
wrapper»
,«effect»:«fade»,«event»:«mousedown»,«keypress»:true,«prevent»:«click»,«url»:«/system/ajax»,«submit»:
{«_triggering_element_name»:«field_img_formatter_settings_cancel»,«_triggering_element_value»:«u041eu0442u043cu0435u043du0438
u0442u044c»
}}},«fieldUIRowsData»:{«body»:
{«rowHandler»:«field»,«defaultFormatter»:«text_default»,«name»:«body»,«region»:«visible»},«field-img»:
{«rowHandler»:«field»,«defaultFormatter»:«image»,«name»:«field_img»,«region»:«visible»},«subscriptions-ui»:
{«rowHandler»:«field»,«name»:«subscriptions_ui»,«region»:«visible»},«-add-new-group»:
{«rowHandler»:«group»,«name»:«_add_new_group»,«region»:«add_new»}}},«merge»:true},
{«command»:«insert»,«method»:null,«selector»:null,«data»:«u003Cdiv id=u0022field-display-overview-wrapperu0022u003Eu003Ctable
class=u0022field-ui-overview sticky-enabledu0022 id=u0022field-display-overviewu0022u003En
u003Ctheadu003Eu003Ctru003Eu003Cthu003Eu041fu043eu043bu0435u003C/thu003Eu003Cthu003Eu0412u0435u0441u003C/thu00
3Eu003Cthu003Eu0420u043eu0434u0438u0442u0435u043bu044cu003C/thu003Eu003Cthu003Eu041cu0435u0442u043au0430u003C
/thu003Eu003Cth colspan=u00223u0022u003Eu0424u043eu0440u043cu0430u0442u003C/thu003E
u003C/tru003Eu003C/theadu003Enu003Ctbodyu003En u003Ctr class=u0022region-message region-visible-message region-
populatedu0022u003Eu003Ctd colspan=u00227u0022u003Eu041fu043eu043bu0435u0439 u043du0435u0442.u003C/tdu003E
u003C/tru003En u003Ctr class=u0022draggable tabledrag-leaf field-formatter-settings-editing oddu0022 id=u0022field-
imgu0022u003Eu003Ctdu003Eu041au0430u0440u0442u0438u043du043au0430u003C/tdu003Eu003Ctdu003Eu003Cdiv
class=u0022form-item form-type-textfield form-item-fields-field-img-weightu0022u003En  u003Clabel class=u0022element-
invisibleu0022 for=u0022edit-fields-field-img-weight—2u0022u003Eu0412u0435u0441
u041au0430u0440u0442u0438u043du043au0430 u003C/labelu003En u003Cinput class=u0022field-weight form-textu0022
type=u0022textu0022 id=u0022edit-fields-field-img-weight—2u0022 name=u0022fields[field_img][weight]u0022 value=u00220u0022
size=u00223u0022 maxlength=u0022128u0022 /u003Enu003C/divu003Enu003C/tdu003Eu003Ctdu003Eu003Cdiv class=u0022form-
item form-type-select form-item-fields-field-img-parentu0022u003En  u003Clabel class=u0022element-invisibleu0022
for=u0022edit-fields-field-img-parent—2u0022u003Eu041eu0442u043eu0431u0440u0430u0436u0430u0435u043cu0430u044f
u043cu0435u0442u043au0430 u0434u043bu044f u041au0430u0440u0442u0438u043du043au0430 u003C/labelu003En
u003Cselect class=u0022field-parent form-selectu0022 id=u0022edit-fields-field-img-parent—2u0022 name=u0022fields[field_img]
[parent]u0022u003Eu003Coption value=u0022u0022 selected=u0022selectedu0022u003E- u041du0435
u0443u043au0430u0437u0430u043du043e —u003C/optionu003Eu003Coption
value=u0022_add_new_groupu0022u003Eu0414u043eu0431u0430u0432u0438u0442u044c u043du043eu0432u0443u044e
u0433u0440u0443u043fu043fu0443u003C/optionu003Eu003C/selectu003Enu003C/divu003Enu003Cinput class=u0022field-
nameu0022 type=u0022hiddenu0022 name=u0022fields[field_img][parent_wrapper][hidden_name]u0022 value=u0022field_imgu0022
/u003Enu003C/tdu003Eu003Ctdu003Eu003Cdiv class=u0022form-item form-type-select form-item-fields-field-img-
labelu0022u003En  u003Clabel class=u0022element-invisibleu0022 for=u0022edit-fields-field-img-label-
-2u0022u003Eu041eu0442u043eu0431u0440u0430u0436u0430u0435u043cu0430u044f u043cu0435u0442u043au0430
u0434u043bu044f u041au0430u0440u0442u0438u043du043au0430 u003C/labelu003En u003Cselect id=u0022edit-fields-field-
img-label—2u0022 name=u0022fields[field_img][label]u0022 class=u0022form-selectu0022u003Eu003Coption
value=u0022aboveu0022u003Eu0421u0432u0435u0440u0445u0443u003C/optionu003Eu003Coption
value=u0022inlineu0022u003Eu0412 u043bu0438u043du0438u044eu003C/optionu003Eu003Coption value=u0022hiddenu0022
selected=u0022selectedu0022u003Eu0026lt;u0421u043au0440u044bu0442u043eu0026gt;u003C/optionu003Eu003C/selectu003En
u003C/divu003Enu003C/tdu003Eu003Ctd colspan=u00223u0022u003Eu003Cdiv class=u0022ajax-new-contentu0022u003Eu003Cdiv
class=u0022form-item form-type-select form-item-fields-field-img-typeu0022u003En  u003Clabel class=u0022element-
invisibleu0022 for=u0022edit-fields-field-img-type—2u0022u003Eu0417u0430u0434u0430u043du0438u0435
u0444u043eu0440u043cu0430u0442u0430 u0434u043bu044f u041au0430u0440u0442u0438u043du043au0430
u003C/labelu003En u003Cselect class=u0022field-formatter-type form-selectu0022 id=u0022edit-fields-field-img-type—2u0022
name=u0022fields[field_img][type]u0022u003Eu003Coption value=u0022imageu0022
selected=u0022selectedu0022u003Eu0418u0437u043eu0431u0440u0430u0436u0435u043du0438u0435u003C/optionu003Eu003Copti
on
value=u0022hiddenu0022u003Eu0026lt;u0421u043au0440u044bu0442u043eu0026gt;u003C/optionu003Eu003C/selectu003Enu003
C/divu003Enu003Cdiv class=u0022field-formatter-settings-edit-form form-wrapperu0022 id=u0022edit-fields-field-img-settings-
edit-formu0022u003Eu041du0430u0441u0442u0440u043eu0439u043au0438 u0444u043eu0440u043cu0430u0442u0430: u003Cspan
class=u0022formatter-nameu0022u003Eu0418u0437u043eu0431u0440u0430u0436u0435u043du0438u0435u003C/spanu003Eu003Cdiv
class=u0022form-item form-type-select form-item-fields-field-img-settings-edit-form-settings-image-styleu0022u003En  
u003Clabel for=u0022edit-fields-field-img-settings-edit-form-settings-image-styleu0022u003Eu0421u0442u0438u043bu044c
u0438u0437u043eu0431u0440u0430u0436u0435u043du0438u044f u003C/labelu003En u003Cselect id=u0022edit-fields-field-
img-settings-edit-form-settings-image-styleu0022 name=u0022fields[field_img][settings_edit_form][settings][image_style]u0022
class=u0022form-selectu0022u003Eu003Coption value=u0022u0022 selected=u0022selectedu0022u003Eu041du0435u0442
(u043eu0440u0438u0433u0438u043du0430u043bu044cu043du043eu0435
u0438u0437u043eu0431u0440u0430u0436u0435u043du0438u0435)u003C/optionu003Eu003Coption
value=u0022avataru0022u003Eavataru003C/optionu003Eu003Coption value=u0022thumbnailu0022u003EThumbnail
(100×100)u003C/optionu003Eu003Coption value=u0022mediumu0022u003EMedium (220×220)u003C/optionu003Eu003Coption
value=u0022largeu0022u003ELarge (480×480)u003C/optionu003Eu003C/selectu003Enu003C/divu003Enu003Cdiv
class=u0022form-item form-type-select form-item-fields-field-img-settings-edit-form-settings-image-linku0022u003En  u003Clabel
for=u0022edit-fields-field-img-settings-edit-form-settings-image-
linku0022u003Eu0418u0437u043eu0431u0440u0430u0436u0435u043du0438u0435 u043au0430u043a
u0441u0441u044bu043bu043au0430 u043du0430 u003C/labelu003En u003Cselect id=u0022edit-fields-field-img-settings-edit-
form-settings-image-linku0022 name=u0022fields[field_img][settings_edit_form][settings][image_link]u0022 class=u0022form-
selectu0022u003Eu003Coption value=u0022u0022
selected=u0022selectedu0022u003Eu041du0438u0447u0435u0433u043eu003C/optionu003Eu003Coption
value=u0022contentu0022u003Eu0421u043eu0434u0435u0440u0436u0438u043cu043eu0435u003C/optionu003Eu003Coption
value=u0022fileu0022u003Eu0424u0430u0439u043bu003C/optionu003Eu003C/selectu003Enu003C/divu003Enu003Cdiv
class=u0022form-actions form-wrapperu0022 id=u0022edit-fields-field-img-settings-edit-form-actionsu0022u003Eu003Cinput
type=u0022submitu0022 id=u0022edit-fields-field-img-settings-edit-form-actions-save-settingsu0022
name=u0022field_img_formatter_settings_updateu0022 value=u0022u041eu0431u043du043eu0432u0438u0442u044cu0022
class=u0022form-submitu0022 /u003Eu003Cinput type=u0022submitu0022 id=u0022edit-fields-field-img-settings-edit-form-
actions-cancel-settingsu0022 name=u0022field_img_formatter_settings_cancelu0022
value=u0022u041eu0442u043cu0435u043du0438u0442u044cu0022 class=u0022form-submitu0022
/u003Eu003C/divu003Eu003C/divu003Eu003C/divu003Eu003C/tdu003E u003C/tru003En u003Ctr class=u0022draggable
tabledrag-leaf evenu0022
id=u0022bodyu0022u003Eu003Ctdu003Eu0422u0435u043au0441u0442u003C/tdu003Eu003Ctdu003Eu003Cdiv class=u0022form-item
form-type-textfield form-item-fields-body-weightu0022u003En  u003Clabel class=u0022element-invisibleu0022 for=u0022edit-
fields-body-weight—2u0022u003Eu0412u0435u0441 u0422u0435u043au0441u0442 u003C/labelu003En u003Cinput
class=u0022field-weight form-textu0022 type=u0022textu0022 id=u0022edit-fields-body-weight—2u0022 name=u0022fields[body]
[weight]u0022 value=u00221u0022 size=u0022

Не могу понять в чем дело, в гугле искал решение, много что нашел, и что F5 нужно просто нажать, увеличить memory, которая у меня и так 128MB от хостера, и что в файле local.inc нужно увеличить время ответа скриптов, но ничего не помогло. Подскажите что нибудь, пожалуйста.

  • Drupal7
  • Есть вопрос
  • Решение проблем

By Rod McBride

jQuery has a lot of methods to define and process AJAX requests in a convenient fashion, but one useful feature added to jQuery in version 1.0 is often overlooked by developers. 

The ajaxError() method is a method that can serve as a centralized place for AJAX request error handling. In general, unexpected server responses are handled similarly as on a web page, such as when a notification or a modal dialogue appears to tell the user that something unexpected happened and the operation has failed. 

By looking at the jQuery documentation for the AJAX convenience methods, like $.post and $.get, we notice that we can attach callback methods to successful and failed AJAX calls. 

$.post(«/api/sendStuff», function () {

    //… handle success

}).fail(function () {

    //… handle failure and display notification

});

Having a way to handle errors on individual AJAX calls is a great way to fine-tune your JavaScript and deal with specific error scenarios close to their occurrences. However, being aware of a centralized AJAX error-handling routine could avoid scenarios similar to this:

$.post(«/api/operationA», function(){

   //…

}).fail(function(jqXHR, textStatus, error){

   handleError(error);

});

$.post(«/api/operationB», function(){

   //…

}).fail(function(jqXHR, textStatus, error){

   handleError(error);

});

$.post(«/api/operationC», function(){

   //…

}).fail(function(jqXHR, textStatus, error){

   handleError(error);

});

In this scenario, the developer created a sophisticated, dynamic, single-page application driven by a collection of AJAX requests and wrote a method that processes errors thrown by those AJAX requests. Technically, there isn’t anything wrong with this solution. However, it isn’t the most elegant approach and causes a lot of repeated code fragments. 

We can get rid of all the redundant fail callbacks by defining the default behavior of the page in case an AJAX exception occurs with ajaxError(). The method needs to be attached to the document object and will serve as a centralized processing place for those types of AJAX scenarios:

$(document).ajaxError(function( event, jqxhr, settings, thrownError ) {

   handleError(error);

});

This global handler will always fire upon an error situation regardless if there is a defined local fail callback. Consequently, the following code fragment will display both error notifications at the same time:

$(document).ajaxError(function( event, jqxhr, settings, thrownError ) {

   showErrorNotificationA(error);

});

$.post(«/api/operationA», function(){

   //…

}).fail(function(jqXHR, textStatus, error){

   showErrorNotificationB(error);

});

To suppress the global error handler and prevent duplicate notifications requires adding some additional logic that gives more control over it.

One way to accomplish this is to define a flag in the settings of the AJAX request that determines whether the global error handler should fire.

The biggest disadvantage of this approach is that you can’t use $.post() and $.get() anymore for these kinds of requests, and we need to fall back to $.ajax() that gives more granular control over the request. Here is an example:

$(document).ajaxError(function( event, jqxhr, settings, thrownError ) {

   if(!settings.suppressGlobalErrorHandler){

         handleError(error);

   }

});

$.ajax(«/api/operationA», {

   suppressGlobalErrorHandler: true,

   success: function(){

      //…

   },

   error: function(jqXHR, textStatus, error){

      //…

   }

});

If you’d like to learn more about the AJAX error handling or have other jQuery or JavaScript questions, contact the technology consultants at Wipfli. You can also keep reading more of our technology-focused articles here.

Уважаемые пользователи!
Напоминаем, что с 7 ноября 2020 года phpBB Group прекратила выпуск обновлений для phpBB версии 3.2.
С учетом этого, рекомендуется обновить конференции до версии 3.3.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до отдельного объявления.

Аватара пользователя

COB16

phpBB 2.0.15
Сообщения: 1011
Стаж: 8 лет 4 месяца
Откуда: Беларусь
Благодарил (а): 316 раз
Поблагодарили: 58 раз

Ошибка AJAX при переходне на страницы

Вчера появилась такая проблема при обновлении страницы: Ошибка AJAX При обработке запроса произошла ошибка.
не возможно обновить страницу даже любую
Версия форума 3.1.7 PL-1

Отправлено спустя 1 минуту 8 секунд:
при отключении экста QuickReply Reloaded все нормально работает

Последний раз редактировалось COB16 30.01.2016 13:49, всего редактировалось 1 раз.

Аватара пользователя

COB16

phpBB 2.0.15
Сообщения: 1011
Стаж: 8 лет 4 месяца
Откуда: Беларусь
Благодарил (а): 316 раз
Поблагодарили: 58 раз

Re: Ошибка AJAX при переходне на страницы

Сообщение

COB16 » 30.01.2016 13:49

LavIgor, много установлено. Да чета с названием не так написал ошибся малеха. Короче ошибку вызывает экст: Добавление кода и контента в верх/низ страниц оно вчера как раз и обновилось. При вкл ошибка аякс на страницах

Отправлено спустя 2 часа 52 минуты 52 секунды:
в общем новая версия расширения не работает вместе с БО. Пришлось залить старую версию расширения Добавление кода и контента в верх/низ страниц

dmitry85

phpBB 1.2.1
Сообщения: 24
Стаж: 7 лет 6 месяцев
Благодарил (а): 2 раза

Re: Ошибка AJAX при переходне на страницы

Сообщение

dmitry85 » 04.02.2016 17:25

LavIgor писал(а): strelok-by, последняя версия быстрого ответа установлена?
Ошибка сразу после обновления страницы (нажатия F5, например)?

У меня два назад аналогичное случилось. При переходе в теме по страницам стало зависать.

2016-02-04_192025.jpg

Также и при быстром ответе при отправке сообщения. После обновления страницы все становилось на свои места. Устанавливал накануне два расширения Advertisement Management и чуть ранее Images from posts. В итоге в настройках расширения «быстрого ответа» пришлось отключить «Ajax отправку сообщений» (отправка сообщений без перезагрузки страницы) и «Разрешить просмотр тем без перезагрузки страницы».

Стало нормально, но подскажите, как можно исправить, просто очень нравилось когда при отправке сообщений через быстрый ответ страничка не обновлялась. Спасибо.

Аватара пользователя

LavIgor

Former team member
Сообщения: 3468
Стаж: 8 лет 9 месяцев
Благодарил (а): 41 раз
Поблагодарили: 931 раз

Re: Ошибка AJAX при переходне на страницы

Сообщение

LavIgor » 04.02.2016 17:32

dmitry85 писал(а): подскажите, как можно исправить

Доработать расширения, после установки которых возникла проблема.
Возможно, одно из них уже из коробки идёт с неправильной разметкой или просто использует одно из событий шаблона, уже задействованное в расширении для быстрого ответа (в таком случае может быть конфликт из-за перекрывания элементов в различных событиях).

Понравилась статья? Поделить с друзьями:
  • Ошибка 999 на фискальном регистраторе атол
  • Ошибка ajax запроса что это
  • Ошибка 999 на терминале
  • Ошибка airf на бобкете
  • Ошибка 999 как исправить