Всем привет! Вот есть такой код: [js] function show() { $.ajax({ url: "server-script.php", cache: false, success: function(data){ alert(data); } }); } $(document).ready(function(){ show(); }); [/js] Соответственно есть скрипт server-script.php, суть которого примерно следующая: он коннектится к базе данных, запрашивает некоторую строку, а потом смотрит: если эта строка равна заданному значению, то в аяксе вываливается одно, если нет - другое. В коде это выглядит примерно так: PHP: /* здесь некоторый код коннекта к базе */ $q = mysql_query('SELECT test_str FROM test_ajax WHERE test_id = 2'); $row = mysql_fetch_row($q); if ($row[0] == 'test2') { echo 'Строка найдена'; } else { echo 'Строка не найдена'; } Всё это прекрасно работает и выдаёт всё так, как надо. Понимаю, что это учебный пример, но то же самое понадобится в реальных проектах. Вопрос такой: как сделать сравнение не на стороне php а на стороне клиента? Т.е. в $row мы взяли некоторую строку, а потом требуется эту переменную $row передать в функцию, которая определена в ajax на событие success (function (data)), в ту самую переменную data. А уже на стороне JS посмотреть - если, к примеру data[0] равна x, то выдать x, если y, то выдать y. Всё это конечно очень абстрактно и условно но, думаю, меня поймут P. S. В mootools это реализовано приблизительно так: я передаю json-закодированную переменную в скрипт, эта переменная представляет собой массив. И в JS (mootools) уже известны все элементы этого массива. Т.е. если $action['test'] = 24 то var action['test'] тоже будет 24. Вот что-то подобного нужно добиться в jQuery. Всем заранее спасибо за помощь.
Код (Text): function show() { $.ajax({ dataType: 'json', url : "server-script.php", cache : false, type : 'post', /*Тут то, что ты передаешь на сервер. В данном случае две независимые переменные*/ data : { id : id, count : count }, success: function(data){ alert(data); } }); } $(document).ready(function(){ show(); });
tommyangelo За это, конечно, спасибо. Но следующее: [js] function show() { $.ajax({ dataType: 'json', url: "server-script.php", cache: false, success: function(data){ alert(data.test_str); } }); } $(document).ready(function(){ show(); }); [/js] Код (Text): $q = mysql_query('SELECT test_str FROM test_ajax'); $r = array(); while ($data = mysql_fetch_array($q)) { $r[] = $data; } echo json_encode($r); в итоге выдаёт undefined. Хотя print_r($r) выдаёт вот что: Код (Text): Array ( [0] => Array ( [0] => test [test_str] => test ) [1] => Array ( [0] => test1 [test_str] => test1 ) [2] => Array ( [0] => test2 [test_str] => test2 ) [3] => Array ( [0] => test4 [test_str] => test4 ) ) Где правда?
О, вроде разобрался, спасибо всем ))) [js] success: function(data){ if (data[0].test_str == 'test') { alert('Строка test'); } else { alert('Другая строка'); } } }); [/js] вот так достигается то, что нужно