Jump to content
  • 0

toggle + ajax


drew
 Share

Question

Добрый вечер!

Начал познавать технологию ajax и по-тихоньку прилеплять её к придуманному сайту.

Появилась нужда в применении функций .toggle, для определения клика по <div> и .ajax для последующей передачи данных в .php файл.

Вроде получилось, и данные о кликах отправлялись в бд. Стал усовершенствовать функции и через какое-то время застопорился, не работает и всё тут.

Не вызывает .php файл!

Убрал всё, что сделал после последнего успеха. Но и тут я не могу найти ошибку.

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

$("#black").toggle(
function () {
$.ajax({
type: "POST",
url: "out_couple.php",
data: "{name_pic}"
});
}
);

<div id="black">...</div>

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

1 Функции обработки ошибок и успешных запросов опущены нарочно?

2 url: "out_couple.php", - реально существует, может стоит более полный путь прописать хотя бы от корня сайта?

3 и да, чуть не забыл,

 data: "{name_pic}"

что вы эти хотели передать? Это невалидный json. Если это имя переменной то оно не должно быть внутри кавычек , если это ключ который ожидает сервер то он не должен быть спрятан "{key}" правильно будет {key:'value'} а если value переменная то {key:value}

И дальше, если проблема в неправильном ответе от сервера(точнее неожиданном) то удостоверьтесь что сервер ожидает данные в get так как по умолчанию используется именно этот метод, а у вас он не указан.

Почитайте http://api.jquery.com/jQuery.ajax/

Edited by MetSerp
Link to comment
Share on other sites

  • 0

1 Функции обработки ошибок и успешных запросов опущены нарочно?

2 url: "out_couple.php", - реально существует, может стоит более полный путь прописать хотя бы от корня сайта?

3 и да, чуть не забыл,

 data: "{name_pic}"

что вы эти хотели передать? Это невалидный json. Если это имя переменной то оно не должно быть внутри кавычек , если это ключ который ожидает сервер то он не должен быть спрятан "{key}" правильно будет {key:'value'} а если value переменная то {key:value}

И дальше, если проблема в неправильном ответе от сервера(точнее неожиданном) то удостоверьтесь что сервер ожидает данные в get так как по умолчанию используется именно этот метод, а у вас он не указан.

Почитайте http://api.jquery.com/jQuery.ajax/

1. Да, смотря примеры, по той же ссылке, что Вы подсказали, я убрал функции обработки отсюда.

2. существует, заполняем бд им. Указание полного пути так же не помогло.

3. С синтаксисом я ещё пока не дружу, спасибо за подсказку! Но я решил просто убрать эту переменную. Хочу добиться только вызова out_couple.php

а разве

type: "POST",

я не устанавливаю метод POST ?

В итоге имею только это:


$("#black_side").toggle(
function () {
$.ajax({
type: "POST",
url: "out_couple.php"
});
}
);

и этот кусок кода не отрабатывается.

Edited by drew
Link to comment
Share on other sites

  • 0

я не устанавливаю метод POST ?

не заметил :rolleyes:

А где то есть пример? или сами посмотрите например хромовским снифером (контрал + шифт + j вкладка network клик по имени файла) :

Нормально если сервер вернул ответ код 200, остальные коды свидетельствуют об ошибках и указывают какие именно.

Link to comment
Share on other sites

  • 0

Нормально если сервер вернул ответ код 200, остальные коды свидетельствуют об ошибках и указывают какие именно.

вернул 200...

или 304, что я полагаю не ошибка

Link to comment
Share on other sites

  • 0

а можно тогда код и клиента и сервера и структуру полную папок и файлов а так же то что в итоге вы хотите получить?

Можешь посмотреть здесь: http://drew.h19.ru/test/

Я хочу добиться того, что бы при нажатии на картинку в центре, информация об этом поступала в бд.

Это так сказать мне для старта) Основная работа конечно же не эта. На данном этапе понять бы почему ничего не поступает в бд.

Причём хочу отметить, что днём этот момент отрабатывал на 5+, но не могу найти вечером, что же я изменил...

php файл:

<?php
require_once ('func/_connect_bd.php');

$result = mysql_query("INSERT INTO tblUserChoice (id_user, id_pic) VALUES ('1','1')");
?>

конечно же для простоты детали опущены.

Link to comment
Share on other sites

  • 0

а оно точно работало без присвоения его событию?

toggle - не событие, click например - событие.

Я думал об этом, но вроде работало с toggle, правда был дописан тот же success, но опять же не думаю, что его отсутствие на что либо повлияло.

http://api.jquery.com/toggle-event/ пользовался этим мануалом. Если не ошибаюсь, у click идентичный синтаксис, я только что поменял, и опять же никакой реакции.

У меня прям паника... Ctrl-Z на пол дня найти бы :unsure:

Link to comment
Share on other sites

  • 0

Да у вас PHP с ошибкой валится :facepalmxd:

Warning: require_once(func/_connect_bd.php) [function.require-once]: failed to open stream: No such file or directory in /home/d/drew.h19.ru/WWW/test/out_couple.php on line 2

Fatal error: require_once() [function.require]: Failed opening required 'func/_connect_bd.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/d/drew.h19.ru/WWW/test/out_couple.php on line 2

Link to comment
Share on other sites

  • 0

Да у вас PHP с ошибкой валится :facepalmxd:

Warning: require_once(func/_connect_bd.php) [function.require-once]: failed to open stream: No such file or directory in /home/d/drew.h19.ru/WWW/test/out_couple.php on line 2

Fatal error: require_once() [function.require]: Failed opening required 'func/_connect_bd.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/d/drew.h19.ru/WWW/test/out_couple.php on line 2

Нет, дело не в этом, эту ошибка из-за невнимательности при создании тестовой странички, убрав её - всё то же самое. Никакой реакции php файла.

Link to comment
Share on other sites

  • 0

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

т.е. к примеру пусть мой php файл будет выводить одно echo?

и никакой реакции, я всё же думаю, что проблема в js скрипте.

Link to comment
Share on other sites

  • 0

Да, для начала такой:


<?php
echo 'ok';
?>

это сейчас и сделано, не срабатывает.

а как насчет в документ change.js добавить:

$(document).ready(function(){

$("#black_side").click(function(){

...

});

});

Думал насчёт этого, но нет, тоже без толку.

Думаю, может не реагирует на .click?

Link to comment
Share on other sites

  • 0

а success вставили в ajax? <?php

echo 'ok';

?>

что обработать это?

Вставил success и заработало! Спасибо вам!

В итоге исправно работает сей кусок:

$(document).ready(function(){
$("#black_side").click(
function () {
$.ajax({
type: "POST",
url: "out_couple.php",
success: function(){
}
});
}
);
});

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy