Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > вызов функции на выполнение


Автор: studentigor 8.6.2010, 17:09
Нужно сделать по типу отображение скрытого блока - жму на текст в теге <a></a>, и он вызывает ф-ю и отбражает скрытый блок.
А то что мне нужно сделать - жму на текст в теге <a></a>, и он вызывает ф-ю "shoin(str)", которая через аякс, РНР вытягивает из бази данные и выводит их в гриде. Ну это в идеале. А так она даже алерты при нажатии не выводит

Вот так я её вызsваю и передаю строку "$myrow['in']"
Код

...
<td><a href="javascript:shoin(';
echo "'".$myrow['in']."')";
echo '">'.$myrow['in'].'</a></td>
...


авот так я описал ф-ю на js

Код

function shoin(str){
    ykaz = true; 
    $.ajax({data:'jsonData=' + $.toJSON({"param":"vinznach", "in":str,"ykaz":ykaz}),
success: function(res) {
 if (res !='X') {
    arxy = explode ('~',res); mo=arxy[1]; top=arxy[2];..;alert(mo);
    }
},
error: function(xhr) {
$.jGrowl('<p></p>Ошибка обращения к серверу..',{theme:'error', header:'ОШИБКА',sticky:false, life:15000});
}                         
});
    
};




Автор: bars80080 8.6.2010, 19:14
Цитата(studentigor @  8.6.2010,  17:09 Найти цитируемый пост)
...
<td><a href="javascript:shoin(';
echo "'".$myrow['in']."')";
echo '">'.$myrow['in'].'</a></td>
...

вы не поверите, но в браузере, где работает javascript - этого нет. пхп-код пропущен на сервере через пхп-машину и выдаёт чистый хтмл.
а вот если вы в браузере кликните правой кнопкой мыши по странице и выберите "показать исходный код", то увидете реальный хтмл, а может и сразу ошибку

Автор: studentigor 9.6.2010, 09:48
вот  то что выводит браузер
Код

...
<td><a href="javascript:shoin('WBADC')">WBADC</a></td>
...

Тоесть он выводит то что и нужно: вызывает ф-ю, и передает ей строку.

а делаю я так потому что точно таким же образом я отображал скрытый блок. Вызывалась ф-я точно также, и все работает.
Может быть хто нить подскажет мне другой способ реализации такой задачи.


Автор: studentigor 9.6.2010, 11:19
Сделал чучуть подругому, работает.

Код

echo '<td>';
echo '<script type="text/javascript">';
echo "st = '".$myrow['in']."';</script>";
echo '<input type="submit" name="Submit" value="'.$myrow['in'].'" id="shoin" /></td>

принимаю
Код

$("#shoin").click(function()
{
    $.ajax({data:'jsonData=' + $.toJSON({"param":"inznach", "in":st}),
success: function(res) {
 if (res !='X') {
    arxy = (res); 
    $.jGrowl(arxy,{theme:'success', header:'ВЫБРАНО',sticky:false, life:10000});
    }
},
error: function(xhr) {
$.jGrowl('<p></p>Ошибка обращения к серверу..',{theme:'error', header:'ОШИБКА',sticky:false, life:15000});
}                         
});
}    
);


Но теперь другой вопрос.
Из всей таблици которая формируется работает только кнопка в первой строчке, при нажатии выводит как и запланированно.
А в остальных строках они не работают. Как быть.

Автор: EmilRegis 9.6.2010, 13:25
чтобы ответили на ваш вопрос, надо приводить тестовый пример...
но что-то подсказывает, что все кнопки имеют id="shoin", поэтому и не работает ничего

Автор: studentigor 9.6.2010, 13:44
Цитата

надо приводить тестовый пример

Это огромная система, тут все от всего зависит, и чтобы сделать тестовый пример надо день убить.я привел, по моему, те фрагменты которые нужны для решения проблемы.
А как мне обойти эту ситуацию. 

Автор: EmilRegis 10.6.2010, 05:49
ну если действительно все кнопки имеют id="shoin" то назнач им один и тот же класс 
и пиши 
Код

$(".shoin").click(function()

или же назначай им разные id (это в любом случае желательно делать), например shoin1,shoin2,shoin3 и пиши так
Код

$("div[id^='shoin']").click(function(){
    //blablalba
});

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)