Рефакторинг многих вызовов Ajax jQuery - лучшая практика?

Можно использовать фильтр dict2items . Шаблон ниже

{% for item in test123|dict2items %}                                                
{{ item }}                                                                          
{% endfor %}

{% for item in test123|dict2items %}
key: {{ item.key }}
value.number: {{ item.value.number }}
value.name: {{ item.value.name }}
value.path: {{ item.value.path }}

{% endfor %}

дает

{'value': {u'path': u'/tmp/test.txt', u'name': u'test1', u'number': 1}, 'key': u'testA'}
{'value': {u'path': u'/tmp/test.txt', u'name': u'test2', u'number': 2}, 'key': u'testB'}

key: testA
value.number: 1
value.name: test1
value.path: /tmp/test.txt

key: testB
value.number: 2
value.name: test2
value.path: /tmp/test.txt

5
задан Peter Mortensen 11 February 2011 в 21:20
поделиться

3 ответа

Вы можете использовать метод $ .ajaxSetup ({}) в jQuery для установки некоторых распространенных настроек ajax.

Например, если вы собираетесь публиковать один и тот же URL снова и снова на одной странице, вы можете просто установить это в ajaxSetup. Это будет означать, что вам нужно будет передавать меньше параметров в функцию, подобную той, которую предоставляет Ричард. Любое свойство первого параметра метода ajax может быть установлено по умолчанию в $ .ajaxSetup ().

$.ajaxSetup({
    url: 'my/ajax/url'
    success: function() {
        // Do some default stuff on success
    },
    error: function() {
        // Do some default stuff on a failure
    }
    // etc...
});

Они могут быть переопределены при любом вызове ajax. Итак, теперь вы можете просто сделать:

$.ajax({data:{foo:'bar',bar:'foo'}});

И вы можете переопределить URL, например, так:

$.ajax({url:'different/ajax/url',data:{foo:'bar',bar:'foo'}});
8
ответ дан 18 December 2019 в 12:01
поделиться

Мы часто использовали функцию-оболочку для вызова Ajax, чтобы упростить использование, чтобы вы могли сделать это:

function NewAjax(url, data, success)
{
    $.ajax({
      url: url,
      data: data,
      success: success,
      fail: function ()
      {
        // Do generic failure handling here
      }
}

Но я часто предпочитаю привязываться к каждому событию ajax, используя jQuery ajax events:

http://docs.jquery.com/Ajax

, чтобы вы могли связываться с каждым провалом или успехом каждого вызова ajax, например:

ajaxError (callback) ajaxSuccess (обратный вызов)

7
ответ дан 18 December 2019 в 12:01
поделиться

Как показывает Ричард, посмотрите на различия между фрагментами кода и передайте их в качестве параметров функции. Javascript может передавать функции в виде параметров, которые могут избавить от значительной избыточности.

Если URL-адрес не изменяется, тогда зачем передавать его в качестве параметра, вы можете иметь глобальную переменную, которая будет иметь Основная часть URL, и просто перейдите в часть URL, которая изменяется.

0
ответ дан 18 December 2019 в 12:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: