Эдгар С.
14 повідомлень
#16 років тому
=аякс?
Дорогие фрилансеры! Помогите разобраться вот с такой простой задачкой:
<script language="javascript">
function loud(num_action,param)
{
<?php echo "любой текст"; ?>
//tratata…….
}</script>
у меня не срабатывает скрипт пхп. В идеале нужно чтоб из javascript’a скрипта вызывалась какая нить функция пхп, вот так:
<script language="javascript">
function loud(num_action,param)
{
<?php showcity(); ?>
//tratata…….
}</script>
второй час парюсь уже, может кто знает в чем моя ошибка, и как ее решить. PS: скрипт должен работать без перезагрузки страницы.
Вадим Т.
3240 повідомлень
#16 років тому
Используйте старый добрый SAJAX, как раз то что Вам нужно. Там упрощенный вызов PHP функций из JavaScript через AJAX, причем относительно прозрачно для прораммиста.
One Choosen
183 повідомлення
#16 років тому
Цитата ("Edgar"):

<script language="javascript">
function loud(num_action,param)
{
<?php showcity(); ?>
//tratata…….
}</script>


Нужно понимать что код ПХП выполняется на сервере, а код Яваскрипт выполняется броузером клиента, поэтому такая запись просто выполнит 1 раз при генерации на сервере страницы функцию ПХП showcity(), сама же функция Яваскрипт loud() будет вообще не содержать функции ПХП showcity() даже только потому что все что находится между "<?php" и "?>" в браузер клиенты не попадает, а отрабатывается именно на сервере интерепретатором ПХП.
One Choosen
183 повідомлення
#16 років тому
Edgar,

вот пример кода реализующий фоновую обработку посредством Аякса:

<?php


/**
Builds neccessary JavaScript functions. This functions must be used in
pair with ajax_action(). $id -- it is any unique ID in all ajax_inits,
you can use even a number. $js_id -- must be valid ID of HTML element,
its value attribute will be filled with result of ajaxing :)
*/
function ajax_init( $id, $js_id )
{
$out =
<<<HTML
<script type=text/javascript>
var ajax_req_$id = false;
function ajax_request_$id( url, value ) {
ajax_req_$id = false;
if ( window.XMLHttpRequest ) {
ajax_req_$id = new XMLHttpRequest();
if ( ajax_req_$id.overrideMimeType ) ajax_req_$id.overrideMimeType( 'text/xml' );
} else if ( window.ActiveXObject ) {
try { ajax_req_$id = new ActiveXObject( 'Msxml2.XMLHTTP' ); }
catch (e) { try { ajax_req_$id = new ActiveXObject( 'Microsoft.XMLHTTP' ); } catch (e) { } }
}
if ( ! ajax_req_$id ) { alert( 'Cannot create an XMLHTTP instance!' ); return false; }
ajax_req_$id.onreadystatechange = ajax_output_$id;
ajax_req_$id.open( 'POST', url, true );
ajax_req_$id.send( value );
}
function ajax_output_$id( ) {
if ( ajax_req_$id.readyState == 4 ) {
if ( ajax_req_$id.status == 200 ) document.getElementById('$js_id').value = ajax_req_$id.responseText;
else alert( 'There was a problem with the request!' );
}
}
</script>
HTML;

return $out;
}


/**
Returns prepared executing of AJAX handler in JavaScript. This function must
be used in pair with ajax_init() function.
*/
function ajax_action( $id, $param, $url )
{
return "ajax_request_$id('$url',$param)";
}


// ===============================================================================


if (isset($_GET))
{
if ($HTTP_RAW_POST_DATA=="vasja") echo "This is vasja :)";
else echo "This is not vasja :(";
}
else
{
$out = "";

$out .= "<h4>test_ajax</h4>";

$out .= ajax_init( 1, "f_out" );
$out .= "<input id=f_in onkeyup="".ajax_action( 1, "this.value", "test_ajax.php?ajax" ).""> ";
$out .= "<input id=f_out style=border:0;background-color:#ffee88;text-align:center;>";

echo $out;
}


?>


1) сохрани код в файл "test_ajax.php" и выполни скрипт в броузере;
2) при каждом изменении строки ввода отсылается запрос посредсвом Аякса, где и проверяется -- если введено слово "vasja" выводится одно, иначе -- другое.

П.С.: естественно это только пример, скорее всего нужно будет не проверять напрямую в коде с "vasja", а делать выборку из БД, например.
Эдгар С.
14 повідомлень
#16 років тому
Блльшое всем спасибо.
Андрей П.
43 повідомлення
#16 років тому
Edgar, я бы тебе посоветую убрать "PHP" из профиля, т.к. твой уровень недостаточен
Станислав Малкин
1410 повідомлень
#16 років тому
Цитата ("Luerssen"):
Edgar, я бы тебе посоветую убрать "PHP" из профиля, т.к. твой уровень недостаточен


Стоит определить для чего именно "недостаточен". Мы же не знаем, что за хитрые услуги скрываются под "PHP".
One Choosen
183 повідомлення
#16 років тому
Luerssen,

а я бы советовал вам не заказывать проекты у людей, уровень которых вам кажется недостаточным.
Владимир С.
581 повідомлення
#16 років тому
А почему не раздел 'программирование' ?
Александр Е.
80 повідомлень
#16 років тому
Если все в порядке с английским и нужно простое в использовании, но очень мощное и эффективное средство, то Вам сюда:
Эдгар С.
14 повідомлень
#16 років тому
Цитата ("Luerssen"):
Edgar, я бы тебе посоветую убрать "PHP" из профиля, т.к. твой уровень недостаточен

Да, я новичок в пхп, но я берусь только за те заказы, в которых моего уровня хватает. доработал пару скриптов за небольшую сумму-заказчики довольны.
Эдгар С.
14 повідомлень
#16 років тому
Цитата ("Cord"):
Если все в порядке с английским и нужно простое в использовании, но очень мощное и эффективное средство, то Вам сюда: ]http://www.xajaxproject.org/

Cord , спасибо за полезную ссылку
Эдгар С.
14 повідомлень
#16 років тому
Цитата ("Virtson"):
а почему не раздел 'программирование' ?

В след раз буду более внимателен