Вывод данных из БД в .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, время: 15:46. |