[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: зависает селект после получения значения от аякса
skolozhabskiy
добрый вечер

снова трудности с аяксом
получение выборки в селекте.

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

          <script type="text/javascript">
$(document).ready(function(){
$(function(){
$('select#cb2').change(function(){
//var val = 3; // начальное значение (по умолчанию)
//$("select#cb2 option:selected").each(function () {

val = $('select#cb2 option:selected').val();
$.ajax({
url: 'test.php',
type: 'GET',
cache: false,
data:({opt : val}),
success: function(data) {
$('select#cb2').html($('div#result:first',data));
// $('select#cb2').html($('select#cb2',data)); - как вариант пробовал, селект зависает!
alert(data);
}
}
);
//});
});
});
});
</
script>

код селекта:


<div id="result"><!--begin block of the selector of products -->
<
select id="cb2" name="cb2" wight ="30" size="1"><!--begin selector of products -->
<?php
if (!isset($_GET['opt'])) { $_GET['opt'] = null; }
$num_rows = 50;
echo "$num_rows Rows\n";
for($i=0;$i<$num_rows;$i++) {
$str = 'разделов';
?>
<option value="<?=$i;?>"<?=(isset($_GET['opt'])&&($_GET['opt']==$i))?"selected":'';?>><?=$i+1;?> <?=$str;?></option>
<?
}
$num_items = isset($_GET['opt']) ? $_GET['opt'] : null;
?>
</select><!--end selector of products -->
<?php
echo $num_items;
?>


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

спасибо



Спустя 1 час, 24 минуты, 14 секунд (17.05.2011 - 19:02) Krevedko написал(а):
в каком смысле зависает ?

Спустя 7 минут, 18 секунд (17.05.2011 - 19:09) skolozhabskiy написал(а):
я прикрепил рисунки скриншота до первого алерта и после. после первого алерта селект неактивный и не работает. хотя в алерте все прекрасно и нужное значение и структура страница и выделен именно нужный раздел селекта. где ошибка? мне нужно значение value выделенного option для дальнейшней работы по скрипту. почему?

спасибо

Спустя 1 минута, 53 секунды (17.05.2011 - 19:11) Krevedko написал(а):
он не зависает, а похоже становится пустым. что ты в алерте получаешь ?

Спустя 39 секунд (17.05.2011 - 19:12) skolozhabskiy написал(а):
возможно, но почему? ведь первый алерт работает отлично.

Спустя 37 секунд (17.05.2011 - 19:12) skolozhabskiy написал(а):
полную структуру страницы - все там правильно. абсолютно. вы можете проверить код у себя это весь рабочий код

спасибо

Спустя 21 секунда (17.05.2011 - 19:13) Krevedko написал(а):
что за запись
$('select#cb2').html($('div#result:first',data));
впервые вижу такое

Спустя 5 минут, 46 секунд (17.05.2011 - 19:18) skolozhabskiy написал(а):
можно не обращать нашел в интернете разные интерпретации, пробовал уже все не могу понять причину. в коде есть и другой вариант все равно поле пустое после первого алерта

Спустя 2 минуты, 38 секунд (17.05.2011 - 19:21) Krevedko написал(а):
$('select#cb2').html($('div#result:first',data));

т.е. $('div#result:first',data) -это должен быть текст
ты пробовал писать

text = $('div#result:first',data);
alert(text);

??

Спустя 9 минут, 10 секунд (17.05.2011 - 19:30) skolozhabskiy написал(а):
выводит [object Object]

и снова поле пустое это просто вариант, я в основном работал с

да это просто вариант, я в основном работал с $('select#cb2').html($('select#cb2',data));

но поле пустое, а почему не могу понять.

Спустя 2 минуты, 35 секунд (17.05.2011 - 19:33) Krevedko написал(а):
ну абсолютно правильно выводит. потому что ты объект пытаешься засунуть в текстовое поле.
может надо все таки
$('select#cb2').html(data);
написать ?

Спустя 7 минут, 36 секунд (17.05.2011 - 19:40) skolozhabskiy написал(а):
эффект тот же. вы пробовали у себя?

Спустя 6 минут, 3 секунды (17.05.2011 - 19:47) Krevedko написал(а):
нет. каким образом. это же неполный код

Спустя 2 минуты, 42 секунды (17.05.2011 - 19:49) skolozhabskiy написал(а):
код абсолюно полный поставьте в тсраницу и запустите все работает.

вот еще вариант:

если сделать так:

success: function(data) { $('#result').html(data);}


и

 <div id="result"><!--begin block of the selector of products -->
<?php if (!isset($_GET['opt'])) { $_GET['opt'] = null; }
$opt = isset($_GET['opt']) ? $_GET['opt'] : 5;
?>
</div>


да и еще




зависания и пустого поля нет, но и срабатывает это только один раз после первого выбора ничего не происходит.<option value="<?=$i;?>"<?=(isset($opt)&&($opt==$i))?"selected":'';?>><?=$i+1;?> <?=$str;?></option>


в качетсве проверки поставьте любой выбор от выбранного раздела в селекте. срабатывает только первый выбор

Спустя 1 минута, 11 секунд (17.05.2011 - 19:50) Krevedko написал(а):
где файл test.php ?

Спустя 58 секунд (17.05.2011 - 19:51) skolozhabskiy написал(а):
а это он и есть :-))) он со всем кодом

Спустя 1 минута, 13 секунд (17.05.2011 - 19:53) Krevedko написал(а):
почему опять в нем каша ?

Спустя 2 минуты, 53 секунды (17.05.2011 - 19:55) skolozhabskiy написал(а):
мне так проще отлаживать. он же должен работать и так?

Спустя 48 минут, 1 секунда (17.05.2011 - 20:43) Krevedko написал(а):
в теории. но мне в этой каше разобраться трудною

ну и что выдает
alert(data);

?

Спустя 6 минут, 22 секунды (17.05.2011 - 20:50) skolozhabskiy написал(а):
я уже писал, что алерт после первого выбора выдает что все отлично и страница генерируется прекрасно, но как только закрыть модальное окно алерта селект пустой и далее никаких результатов.

почему там каша, там два кусочка срипта

1. jquery
2. проверка его результата работы и все.

спасибо

Спустя 4 минуты, 11 секунд (17.05.2011 - 20:54) Krevedko написал(а):
а без алерта сразу пустое окно ?

Спустя 6 минут, 38 секунд (17.05.2011 - 21:01) skolozhabskiy написал(а):
нет после первого выбора, потом пустое

Спустя 3 минуты, 18 секунд (17.05.2011 - 21:04) skolozhabskiy написал(а):
сначала все показывает, поле заполнено, потом что-то выбираем и все поле становится пустым.
бросьте два куска этого кода на страничкуи увидете все своими глазами.
все работает сразу никаких доплнительных файлов или кодов не нужно
пожалуйста.

спасибо

Спустя 18 минут, 34 секунды (17.05.2011 - 21:23) Krevedko написал(а):
как я брошу. у меня опять каша. все в одну строку.

с данного форума код копировать невозможно )

Спустя 2 минуты, 57 секунд (17.05.2011 - 21:25) skolozhabskiy написал(а):
я не могу этого понять у меня все отлично из оперы копируется, можно сначала в текстовый редактор стандартный а потом в php? там нет никакого скрипта это просто два кусочка отладочного текста и все

Спустя 9 минут, 11 секунд (17.05.2011 - 21:35) skolozhabskiy написал(а):
попутно вопрос:

а как в конструкции
$("select#cb2 option: selected")
селектор "select#cb2" сделать универсальным, чтобы потом можно было прописать, что вызвать такую-то функцию с таким то например id ?

как например


<script type="text/javascript">
$(document).ready(function(){
$("#id1").selector();
$("#id2").selector();
});
</
script>


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

как-то так:

 jQuery.fn.selector = function() {
// do something
};


спасибо

Спустя 40 минут, 15 секунд (17.05.2011 - 22:15) Krevedko написал(а):
у тебя вся страница попадает в переменную из-за кривизны скрипта. вообще надо полностью переделывать.я повторяю- полностью

Спустя 21 минута, 40 секунд (17.05.2011 - 22:37) skolozhabskiy написал(а):
хорошо буду пробовать. спасибо

Спустя 4 минуты, 7 секунд (17.05.2011 - 22:41) Krevedko написал(а):
я перенес в отдельный файл пхп код, немного выправилось, в алерте остались только опции для селектора. но все равно там строчка лишняя залазит ..вообщем надо переделывать капитально blink.gif

Спустя 3 часа, 44 минуты, 10 секунд (18.05.2011 - 02:25) skolozhabskiy написал(а):
можете подсказать как вы смотрите алерт. я не могу понять как отслеживать эти события. firebug понятно тот что в firefox& или это какя-то другая программа? где кратко почитать как пользоваться? или хотя бы маленький пример

спасибо

Спустя 10 часов, 5 минут, 28 секунд (18.05.2011 - 12:30) Krevedko написал(а):
alert- это чтобы просто посмотреть, что в переменной. А firebug-надстройка для ффокса - удобная штука очень, особенно для отслеживания таких вот переданных данных. Там пишет, что отправлено и что пришло. Установи, я расскажу, где смотреть

Спустя 28 минут, 12 секунд (18.05.2011 - 12:59) skolozhabskiy написал(а):
добрый день.

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

может у кого-то есть еще идеи с решением данной проблемы?

спасибо

Спустя 8 минут, 30 секунд (18.05.2011 - 13:07) Krevedko написал(а):
в нижнем правом значок жучка в браузере. нажимаешь. потом Выбираешь вкладки Консоль-Все.
И когда работаешь с аяксом там появляются строчки типа
GET http://aaa/ajax.php?opt=5&_=1305713122637
200 OK 13ms

раскрываешь эту строку, там будут вкладки
Параметры и Ответ. Вот Параметры-это что ты отправляешь (массив пост или гет), а ответ-это что пришло в ответ из пхп

Спустя 29 минут, 11 секунд (18.05.2011 - 13:36) skolozhabskiy написал(а):
да,я уже разобрался, спасибо. вроде и параметры все нормально выводтся, а код все равно не работает.

Спустя 6 минут, 3 секунды (18.05.2011 - 13:42) Krevedko написал(а):
т.е. тебе приходит
<option>текст1</option>
<option>текст2</option>

насколько я видел, там приходило что-то вроде
--тут какие-то числа--
<option>текст1</option>

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

Спустя 7 минут, 34 секунды (18.05.2011 - 13:50) skolozhabskiy написал(а):
нет, там просто идет нумерация итемов - это же нормально для отладки. потом заменю на конкретный текст, а сейчас это просто номер value чтобы было видно отличие имени каждого option.

Спустя 7 минут, 39 секунд (18.05.2011 - 13:57) Krevedko написал(а):
передавай обратно не сгенерированный текст, а скажем
echo '<option>текст1</option>
<option>текст2</option>';
смотри, будет ли выводить. Экспериментировать надо. Пробовать и так, и эдак. Определять кусок, где ошибка. Толку тут все спрашивать.

Спустя 15 минут, 45 секунд (18.05.2011 - 14:13) skolozhabskiy написал(а):
хорошо , если вы знаете аякс объясните мне если я получаю значение , например opt в конструкции в файле test.php так:

<div id="result">
<?php
if (!isset($_GET['opt'])) {
$_GET['opt'] = null;
}
$opt = $_GET['opt'];
echo $opt;
?>
</div>


а отправляю opt из например ajax.js в test.php
при
success: function(data) {$('#result').html($('#result', data)); }



то почему я не могу оперировать переменной $opt в скрипте test.php.
она постоянно пустая ниже конструкции <div id="result">.................</div>

или я в чем-то ошибаюсь или надо как-то иначе отсылать или success обрабатывать?

можете объяснить подробно.

про аякс напиcано много, а вот на такие случаи нигде ответа я не нашел, хотя уже несколько месяцев пробую с ним работать и до конца не могу понять логику получения переменных в php/

спасибо

Спустя 5 минут, 34 секунды (18.05.2011 - 14:19) Krevedko написал(а):
$opt = $$_GET['opt'];

зачем два доллара ?

success: function(data) {$('#result').html($('#result', data));

после html вообще неправильно.

Спустя 1 минута, 7 секунд (18.05.2011 - 14:20) skolozhabskiy написал(а):
это просто описка, а как правильно? и вообще можете мне объяснить логику передачи параметров в php? написано заумного много об аякс а вот такие случаи остаются протсо за кадром. а хочется разобраться.

спасибо

Спустя 4 минуты, 51 секунда (18.05.2011 - 14:25) Krevedko написал(а):
Подробно:

$.ajax({
url: 'test.php',
type: 'GET',
cache: false,
data:({opt : val}),
success: function(data) {
alert(data); }


url-скрипт, куда ты отправишь данные.
type -тип массива. ГЕТ и ли ПОСТ
кеш никогда не использовал. наверное отключает какое-то кеширование
data -собственно данные для отправки. т.е. в скрипт попадет $_GET['opt'] со значением val
success -сюда попадают данные в случае ответа из пхп скрипта. Данные передаются посредством вывода в поток в пхп скрипте (test.php). Т.е. в случае передачи какого-то текста достаточно в этом пхп файле написать
echo 'текст'; и alert(data); выведет тебе окошко с надписью Текст. Можно передавать массивы. Как, я уже писал. Ну и есть разные параметры. Например перед success бывает пишут БефорСенд, т.е. что делать перед отправкой. Например анимацию какую вставить с надписью Отправляю. Чтобы юзер понимал что происходит. надеюсь объяснил. Все достаточно просто. Если не работает-проверяй что уходит и что приходит. Пробуй в echo в пхп ставить свои значения, смотри будет ли работать итд.

Спустя 18 минут (18.05.2011 - 14:43) skolozhabskiy написал(а):
праметры мне ясны, проблема с понимаем логики success/

если я делаю так :

success: function(data) { 
alert(data); }


то вообще ничего не работает, хотя в параметраъ в отадеке пишет что opt приходит нормально и страницу в отладке показывает правильно а в реальном броузере все наоборот

Спустя 32 секунды (18.05.2011 - 14:43) skolozhabskiy написал(а):
хотя бы один живой пример увидеть как вывести и использовать переменную в php скрипте, самый простой

спасибо

Спустя 14 минут (18.05.2011 - 14:57) Krevedko написал(а):
пример ? пожалуйста:


$.ajax({
url: 'test.php',
type: 'GET',
cache: false,
data:({opt : val}),
success: function(data) {
alert(data); }


в файле test.php

<?php echo 'Вы передали - '. $_GET['opt']; ?>


Выведет в алерте Вы передали - ..значение переданной переменной opt

Спустя 1 минута, 41 секунда (18.05.2011 - 14:59) Krevedko написал(а):
Цитата
хотя в параметраъ в отадеке пишет что opt приходит нормально

отправка происходит. не происходит отправка обратно видимо. Смотри что в Ответе приходит

Спустя 6 минут, 28 секунд (18.05.2011 - 15:05) skolozhabskiy написал(а):
да вот в том то ипроблема и моего не понимания
в отправке страница пишется нормально как нужно, а реально в броузере пишет ничего только ошибки. переменная php пустая, которая должна принять значение переденное от сервера.

как это понять?

спасибо

Спустя 1 минута, 10 секунд (18.05.2011 - 15:07) Krevedko написал(а):
в отправке или в ответе ?

Спустя 5 часов, 28 минут, 49 секунд (18.05.2011 - 20:35) skolozhabskiy написал(а):
в ответе
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.