Red Chocolate Ответов: 4

Вызов функции PHP из javascript


Привет, у меня есть следующая кодировка.

<input type="button" id="sample" value="click" onclick="sam_click()"/>


<script type="text/javascript">
function sam_click(clicked)
{
	var x="<?php ex(); ?>";
	alert(x);
	return false;
}
</script>


<?php
function ex()
{
$con=mysql_connect("localhost","root","");
mysql_select_db("my_db");
$res=mysql_query("call PrcEmployeeDisplay(777)");
$num=mysql_num_rows($res);
echo($num);
}
?>


Здесь, когда кнопка нажата, она вызовет функцию javascript, и эта функция вызовет функцию php. Это работает нормально, то есть база данных подключается и извлекает результат, а также диспалирует количество строк в окне оповещения. Но мне нужно отобразить выбранные результаты в html-таблице, как это сделать? пожалуйста, помогите мне.

Sergey Alexandrovich Kryukov

Что бы вы ни делали, вы не вызываете функцию PHP, которая может существовать только на стороне сервера, из кода Javascript, выполняемого на стороне клиента...
--СА

Red Chocolate

Это нормально, но как отобразить мои результаты в таблице?

skydger

Вы должны создать html-шаблон, чтобы заполнить его при извлечении данных запроса. Пожалуйста, обратитесь к документации php об этом. http://php.net/manual/en/book.mssql.php

Sergey Alexandrovich Kryukov

Я не понимаю, как это может быть нормально. Ваш вопрос касается вызова, который не может существовать, даже если функциональность может напоминать его, как в случае Ajax (который на самом деле является ключом в случае JavaScript).
--СА

4 Ответов

Рейтинг:
2

W∴ Balboos, GHB

Если я правильно понял ваш вопрос, решение состоит в том, чтобы использовать php на стороне сервера не только для извлечения данных, но и для итерации по набору записей для построения HTML. Затем верните весь HTML-код (теперь это строка) вызывающему объекту.

В зависимости от нюансов ваших обстоятельств вам не нужно ничего знать о том, сколько строк возвращается, за исключением, конечно, обработчика (на стороне сервера) для пустого набора записей.

С немного большим количеством к нему (дополнительные возможности, такие как подкачка страниц и дамп excel), у меня есть общий php-интерфейс, который извлекает набор записей и имена столбцов, а затем строит таблицу. Он использует метаданные из вызова php-SQL для получения имен полей.

Что-то вроде этого грубого примера: (где массив набора записей-это $data)

$rval = '<table class='your styles'>
foreach($data as $d) {
  $rval .= '<tr>';
  $rval .= "<td>{$d[0]}</td>";
  $rval .= "<td>{$d[1]}</td>";
   . . . (etc) . . .
  $rval .= '</tr>';
} // foreach($data as $d)
$rval .= '</table>';
return $rval;



Рейтинг:
1

Member 13967663

вы можете создать любую строку hummani str='alert(4)';
и выполните его с помощью команды "eval"

eval("<?php somefunc() ?>");

или

пусть str='alert(4)';
ул. ивала();


Richard Deeming

Если бы вы прочитали комментарии к этому вопросу или одно из двух предыдущих решений, то поняли бы, что ваш фрагмент кода НЕ вызов PHP из Javascript.

Вы фактически взяли код из вопроса и разместили его как "решение".

Рейтинг:
0

Vasudevan Deepak Kumar

Вместо этого утверждения

var x="<?php ex(); ??>";


используйте Jquery $.get, чтобы сделать AJAX-вызов на сервер для выполнения операции, а в функции обратного вызова get используйте операторы
alert(x);
    return false;


Рейтинг:
0

Manmohan Ayer

var function getOutput() {
   $.ajax({
      url:'myAjax.php',
      complete: function (response) {
          $('#output').html(response.responseText);
      },
      error: function () {
          $('#output').html('Bummer: there was an error!');
      }
  });
  return false;
}