Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вывод данных из БД в .js файл (https://javascript.ru/forum/jquery/52207-vyvod-dannykh-iz-bd-v-js-fajjl.html)

Loromir 08.12.2014 15:51

Вывод данных из БД в .js файл
 
На сайте есть калькулятор услуг, написан не мной на js(сам я пока не очень им владею =))

Суть в чем. Сейчас у меня есть 100500 строк кода с шапке сайта с этим функциями калькулятора, спросите почему? Потому что на тот момент когда добавлял в админку возможность редактировать эти тарифы на кальк, сделал это через пхп(берется массив из БД и форичем вставляет значения в функции скрипта).

Хочу разделить так сказать ХТМЛ и Скрипты.
Понемногу изучал, делал что мог.

Как это вижу:
Есть js файл с функциями который крепится в шапку. В файле функции и аякс запрос к БД (файл с скриптом=>пхп файл с запросом=>данные=>файл с скриптом) и как нибудь также форичем положить по полочкам...
Читал, вроде это както надо делать через json, но не допетрил...
БД выглядит примерно так
id_name_price1_price2_show/hide
1
2
3
....

Заранее благодарю за советы комментарии)

myshara 09.12.2014 14:27

Здравствуйте, 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
?>

Loromir 16.12.2014 13:04

только добрались руки снова к этому вопросу.
первый файл(он же индекс)
<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]


Поправьте меня пожалуйста, где накосячил?

Loromir 16.12.2014 17:18

Rise, пути в порядке, "название подправил", пока без изменений =(
как правильно обработать getJson? пробовал $.makeArray(getJson) тоже не получилось.

Loromir 17.12.2014 15:53

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" не получилось

Loromir 18.12.2014 17:38

оказалось немного проще сделал:
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.