|
|
|
| Простые элементы Jquery работают нормально. Пытался сработать Ajax, что имеем.
(Просто без Smarty локальный пример работает)
Ajax.php
<?php
$regions = array();
$regions[] = array('id'=>'1', 'title'=>'A');
$regions[] = array('id'=>'2', 'title'=>'B');
$regions[] = array('id'=>'3', 'title'=>'C');
$regions[] = array('id'=>'4', 'title'=>'D');
$result = array('type'=>'success', 'regions'=>$regions);
print json_encode($result);
?>
|
Ajax.js
$(document).ready(function () {
$('#country_id').change(function () {
var country_id = $(this).val();
if (country_id == '0') {
$('#region_id').html('');
$('#region_id').attr('disabled', true);
return(false);
}
$('#region_id').attr('disabled', true);
$('#region_id').html('<option>загрузка...</option>');
var url = '/modules/goods/ajax.php';
$.get(
url,
"country_id=" + country_id,
function (result) {
if (result.type == 'error') {
alert('error');
return(false);
}
else {
var options = '';
$(result.regions).each(function() {
options += '<option value="' + $(this).attr('id') + '">' + $(this).attr('title') + '</option>';
});
$('#region_id').html(options);
$('#region_id').attr('disabled', false);
}
},
"json"
);
});
});
|
html документы
<select name="country_id" id="country_id">
<option value="0" selected>- тип операции -</option>
<option value="1">Расход</option>
<option value="2">Приход</option>
</select>
<p>Регион:</p>
<select name="region_id" id="region_id" disabled="disabled">
<option value="0"> </option>
</select>
|
При выборе Расход, приход поле region_id меняется на загрузка, в FireBug ответ
в виде Json
{"type":"success","regions":[{"id":"1","title":"A"},{"id":"2","title":"B"},{"id":"3","title":"C"},{"id":"4","title":"D"}]}
|
Все как надо.
Заголовки ответа вот
Cache-Control no-cache, max-age=1
Connection Keep-Alive
Content-Length 122
Content-Type text/html; charset=windows-1251
Date Tue, 17 Apr 2012 04:23:50 GMT
Expires Tue, 17 Apr 2012 04:23:51 GMT
Keep-Alive timeout=5, max=94
Pragma no-cache
Proxy-Connection Keep-Alive
Server Apache
Via 1.1 MAIN
X-Powered-By PHP/5.3.10 | |
|
|
|
|
|
|
|
для: VL
(17.04.2012 в 08:29)
| |
var options = '';
$.each(result.regions,function(i,n) {
options += '<option value="' + n.id + '">' + n.title + '</option>';
});
$('#region_id').html($(options));
$('#region_id').attr('disabled', false);
}
|
| |
|
|
|
|
|
|
|
для: AlexSol
(17.04.2012 в 09:08)
| | Спс.обновил
$.get(
url,
"country_id=" + country_id,
function (result) {
if (result.type == 'error') {
alert('error');
return(false);
}
else {
var options = '';
$.each(result.regions,function(i,n) {
options += '<option value="' + n.id + '">' + n.title + '</option>';
});
$('#region_id').html($(options));
$('#region_id').attr('disabled', false);
}
},
"json"
);
|
Но ситуация таже | |
|
|
|
|
|
|
|
для: VL
(17.04.2012 в 09:24)
| | $(options) - это объект.
$('#region_id').html(options); | |
|
|
|
|
|
|
|
для: confirm
(17.04.2012 в 12:32)
| | Локально пример мой выше работает на Ура. Но когда прикручиваю к Smarty возникает трабла, я думаю проблема не в Jquery коде а что то где то я упустил с кешем и так далее.
Есть идеи? | |
|
|
|
|
|
|
|
для: VL
(17.04.2012 в 15:37)
| | Не знаю чего у вас там на ура, но втыкать объект, как HTML содержимое.... Какое уж к черту тут ура.
Нет идей, я вообще не понимаю, о чем вы. | |
|
|
|
|
|
|
|
для: confirm
(17.04.2012 в 15:52)
| | Поправил. На локале все ок, в связки в Smarty ответ в FireBug есть , DOM не реагирует | |
|
|
|
|
|
|
|
для: VL
(17.04.2012 в 15:58)
| | Smarty - это шаблонизатор работающий на сервере, и FireBug он как-то по боку. | |
|
|
|
|
|
|
|
для: confirm
(17.04.2012 в 16:29)
| | Так в чем тогда проблема ? и ваш вариант решения | |
|
|
|
|
|
|
|
для: VL
(18.04.2012 в 10:39)
| | А я откуда знаю в чем у вас проблема. Вы писали, что не получается получить элементы json, я вам указал в чем была ошибка. Что еще?
Понимаете, браузеру, как и JS, глубоко наплевать кто породил html, Smarty ли это сделал, или вообще без его участия.
Вы сформулируйте суть проблемы своей, и без всего, что отношения к ней не имеет, тогда возможно и получите ответ на вопрос. | |
|
|
|
|
|
|
|
для: confirm
(18.04.2012 в 10:51)
| | Ошибку что вы указали я поправил.
Если я выполняю этот пример просто в отдельной папке тест на сервере - все работает .
Когда я прикручиваю это к проект где использется смарти то
изменяет поле на LOADING. и данные не подгружаются
но Данные JSON приходят судя по FIREBUGу, то есть Я вижу ответ на мой запрос $.get, но функция указанная в $.get не срабатывает даже если я туда напишу alert , что самое банальное | |
|
|
|
|
|
|
|
для: VL
(18.04.2012 в 13:33)
| | Еще раз повторяю - на клиенте нет никакого Smarty, у клиента чистый html-код. Вот и анализируйте этот код, чтобы выявить ошибку. А уж кто виновником ее является, это уже другой вопрос - либо вы не передали в шаблон нужного, либо не правильно используете Smarty, от чего на вашей странице могут быть явные ошибки.
А догадываться, что у вас там, не зная вашего кода, никто не будет. | |
|
|
|