HREF в зависимости от успеха или неудачи AJAX - PullRequest
1 голос
/ 07 июля 2011

В моем Wordpress у меня установлены нестандартные размеры вложений 128х79 и 896х277.Мои изображения наверняка будут больше, чем 128x79 .Если изображение меньше, чем 896x277, оно обрезает все, что превышает максимальный размер, и устанавливает другое значение на максимум.Это означает, что изображение 500x300 будет обрезано до 500x277.

Допустим, на моей странице у меня есть изображение с href http://domain.com/files-128x79.jpg, и я хочу заменить files-128x79.jpg на files-896x277.jpg, если оно существует, в противном случае найдитесамое большое изображение с высотой в качестве приоритета.

Хорошо ... Я решил упростить свою задачу, чтобы облегчить ее.Все, что я сейчас делаю, - это проверю, существует ли файл-896x277.jpg, и если нет, я хочу, чтобы он вывел файл files.jpg.Я до сих пор получил это, но, похоже, не могу установить привязку href.

$rewrite.find('a').each(function(index, element) {
    $.ajax({
        url : $(this).children().attr('src').replace('-128x79.', '-896x277.'),
        type: 'head',
        success : function() {
                $(this).attr('href', $(this).children().attr('src').replace('-128x79.', '-896x277.'));
        },
        error : function(xhr, d, e) {
            if (xhr.status == 404) {
                $(this).attr('href', $(this).children().attr('src').replace('-128x79.', '.'));
            }
        }
    });
});

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 07 июля 2011

Внутри обратного вызова AJAX, что находится в this? Это все еще элемент, который вызвал событие? Если да, то какое событие? Событие результата AJAX?

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

$(function () {
    var that = $(this);
    $.ajax({
    url : that.children()....
0 голосов
/ 07 июля 2011

Да, вы можете сделать что-то вроде:

var image = 'files-128x79.jpg';
$(function () {
    $.ajax({
        url : 'search_images.php',
        success : function(filelist) {
            //YOu have the filelist in a string. Just parse it to find the image
            ...
            var imageExists = (filelist.indexOf(image) >= 0); //Search the image
            if (!imageExists ) {
                alert('The image was not found');
            }
        },
    });
});

PHP:

search_images.php (linux)
echo `ls /images/files-*.jpg`; //This will list all the images in your directory

Надеюсь, это поможет.Приветствия

...