Вызов jquery.load (); из существующего файла JavaScript - PullRequest
0 голосов
/ 08 февраля 2010

Я не пытаюсь загрузить javascript с помощью jquery или чего-либо подобного.

В настоящее время я изменяю swfupload (если вы с ним знакомы, отлично, иначе это не должно иметь значения) для работы с веб-сайтом, который я создаю. Мне нужна возможность загружать, хранить и удалять файлы. У меня есть загрузка и хранение работает отлично.

У меня есть файл handlers.js, который выполняет большинство взаимодействий. Я хотел бы изменить одну из функций (ту, которая вызывается, когда пользователь нажимает на маленькую кнопку отмены) для вызова php-файла. Единственный способ, которым я знаю, как это сделать, это использовать функцию загрузки jquery. Но я не могу заставить его работать?

Как я могу получить доступ к этим вещам в файле JavaScript?

Я пробовал:

alert($("#messages").html());
$("#messages").load("delete_file.php", {name: this.id});

Сообщения - это div на моей странице, и ничего из этого не работает. Хотя я не получаю никаких ошибок ...

Любая помощь будет отличной!

Ответы [ 3 ]

0 голосов
/ 08 февраля 2010

Вы хотите сделать ajax-выборку, я думаю, что-то вроде:

$.get( 
   'delete_file.php', 
   { name: this.id }, 
   function(htmlFromServer)
   { 
       $("#messages").html(htmlFromServer) 
       //do other things with the html that comes down 
   } 
);

Чтение http://api.jquery.com/jQuery.get/

0 голосов
/ 09 февраля 2010

Если delete_file.php выполняет действие, которое изменит состояние или данные, то делать это с помощью GET не рекомендуется (как $.load(), так и $.get()).

Всегда POST для отправки данных, которые изменят существующие данные или состояние.

$.post("delete_file.php",
       {name: this.id},
       function(data){
         $("#messages").html(data);
       });

Это лучшая практика, потому что если вы разрешите delete_file.php обработать name из переменной $_GET, то что-то столь же простое, как паук Google Crawler, может быстро испортить ваши данные.

0 голосов
/ 08 февраля 2010

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

На основании только что отправленного вами кода, во-первых, порядок имеет значение. Поэтому, когда вы делаете alert, в messages div ничего нет. Вот почему вы ничего не видите в предупреждении.

Во-вторых, функция load является асинхронной, поэтому вам действительно нужен обратный вызов:

$("#messages").load("delete_file.php", {name: this.id}, function() {
   alert($("#messages").html());
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...