Вывод данных из БД в .js файл
На сайте есть калькулятор услуг, написан не мной на js(сам я пока не очень им владею =))
Суть в чем. Сейчас у меня есть 100500 строк кода с шапке сайта с этим функциями калькулятора, спросите почему? Потому что на тот момент когда добавлял в админку возможность редактировать эти тарифы на кальк, сделал это через пхп(берется массив из БД и форичем вставляет значения в функции скрипта). Хочу разделить так сказать ХТМЛ и Скрипты. Понемногу изучал, делал что мог. Как это вижу: Есть js файл с функциями который крепится в шапку. В файле функции и аякс запрос к БД (файл с скриптом=>пхп файл с запросом=>данные=>файл с скриптом) и как нибудь также форичем положить по полочкам... Читал, вроде это както надо делать через json, но не допетрил... БД выглядит примерно так id_name_price1_price2_show/hide 1 2 3 .... Заранее благодарю за советы комментарии) |
Здравствуйте, Loromir.
Это выглядит примерно так: $.ajax ({ url: "make_json.php", cache: false, success: function(getJson) { //что то делаем с getJson } }); теперь make_json.php: <?php ...коннект к БД и запрос $resultDB= mysql_query($queryDB); $json=array(); while ($r = mysql_fetch_assoc($resultDB)) { $json[]=array($r[field1],....,$r[fieldN]); }; $json=json_encode($json); echo $json ?> |
только добрались руки снова к этому вопросу.
первый файл(он же индекс) <script type="text/javascript" src="test.ajax_request.js"></script> <script> $(document).ready(function(e) { test_ajax_request(); }); </script> <div id="result_div_id_calc"> </div> _ 2ой файл(он же скрипты) function test_ajax_request(){ var url_zapros='test.ajax_function.php'; var result_div_id_calc=$('#result_div_id_calc'); $.ajax({ url: url_zapros, cache: false, type: "POST", dataType: "json", success: function(getJson){ res_div_id_calc.text(getJson); },//потом эти данные должны будут уйти в функцию switch(){} error: function(getJson){ result_div_id_calc.text('error: '+getJson); } }); } _ 3ий файл пхп функции //подключение к мускулу //подключение к бд function test_arr_calc(){ $sql="SELECT * FROM ajax_test"; $result=db2array(mysql_query($sql)) or die("Ошибка: ".mysql_error());//db2array функция которая делает "массив в массиве, при выборке полной таблице" $json=json_encode($result); echo $json; } //результат [{"id":"1","value_1":"55555555","value_2":"11111","value_3":"222222"},...] test_arr_calc(); результат в диве: error: [object Object] Поправьте меня пожалуйста, где накосячил? |
Rise, пути в порядке, "название подправил", пока без изменений =(
как правильно обработать getJson? пробовал $.makeArray(getJson) тоже не получилось. |
Rise, посмотрел логи, сразу нашел ошибку) спасиб)
получился многомерный массив разобрал его таким способом(внутри success) $.ajax({ url: url_zapros, cache: false, dataType: 'json', success: function(getJson){ var calc_table = ''; for (var n in getJson){ var json=getJson[n]; calc_table+=json.id+'<br>'; calc_table+=json.value_1+'<br>'; calc_table+=json.value_2+'<br>'; calc_table+=json.value_3+'<br><hr>'; } result_div_id_calc.html(calc_table); }, error: function(getJson){ result_div_id_calc.text('error: '+getJson); } }); нужно, вне аякса, чуть ниже так сказать вывести эти данные таким вот образом: case "<?=$item['class']?>" : var tarif = "<?=$item['tarif_spb']?>";break; только само собой вместо пхп это будут js данные, это реально? попробовал "return getJson" не получилось |
оказалось немного проще сделал:
function xxx(){ return $.ajax({ }).responseText;//если без респонс текст отправить, result получается объектом, но опять таки почему то не разбивается и ошибок не выдает } var result=xxx(); //result получает строку в виде массива но с помощью var calc_table = ''; for (var n in result){ var json=result[n]; calc_table+=json.id+'<br>'; calc_table+=json.value_1+'<br>'; calc_table+=json.value_2+'<br>'; calc_table+=json.value_3+'<br><hr>'; } $('#result_div_id_calc').html(calc_table); //не получается разбит(ибо строка как я понял) =( пойду гуглить дальше, от совета не откажусь) |
Часовой пояс GMT +3, время: 07:40. |