Я довольно новичок в ajax (через jQuery) и JavaScript. Я бы хотел, чтобы периодически выполнять php-скрипт (и асинхронно), который извлекает некоторые данные SQL. Однако я покажу эти данные на графике JavaScript, поэтому мне нужно, чтобы он вернулся в мой JavaScript.
Я попробовал встроенный php-скрипт внутри JavaScript, который подталкивает данные SQL в массив, а затем просто извлекает сама страницу с .ajax
вызова .ajax
, но это не сработало (хотя я мог видеть в источнике страницы, что JavaScript был изменен , график не ответил на изменения):
ajax.php (не работает):
$(function () { function fetchData() { $.ajax('ajax.php'); <?php try { $now = time(); $query = "select * from jet_pressure;" $result = $db->query($query); foreach ($result as $row) { print "d1.push([".$row['timestamp'].",".$row['unknown']."]);"; } } catch (Exception $e) { print 'Exception : '.$e->getMessage(); } ?> $.plot($("#placeholder"), [ d1]); setTimeout(fetchData, 5000); } setTimeout(fetchData, 500); });
Каков рекомендуемый способ сделать это?
Я думаю, вы смешиваете свои концепции. PHP работает только на веб-сервере. Javascript запускается на клиенте (то есть в веб-браузере)
Если вы создаете страницу с расширением .php
как в вашем ajax.php
, она будет обслуживаться с вашего веб-сервера один раз, и все, что она содержит в блоке <?php ?>
Будет анализироваться сервером – это не динамический ,
Полученная страница содержит анализируемые значения из вашего php-скрипта, но не самого скрипта.
Javascript работает на компьютере пользователя и, следовательно, обрабатывает взаимодействие пользователя и события на веб-странице. Вы можете использовать Javascript для вызова сценария сервера (в данном случае php), когда вам нужно получить данные с сервера. В основном это AJAX. Но, как правило, javascript содержится в файлах, заканчивающихся .js
которые, как правило, не анализируются вашим веб-сервером, если только javascript не включен в вашу страницу, но на самом деле это не так.
Я понятия не имею, что вы делаете, смешивая javascript с php. Это не AJAX.
Я предлагаю вам использовать что-то вроде JSON. Этот грубый php-скрипт сначала скомпилирует ваши результаты в JSON, а затем javascript ajax-вызов. Вам нужно будет включить библиотеку JQUERY и сохранить весь PHP-скрипт в виде отдельного файла с именем getdata.php
.
<?php // You'll have to do all the database select stuff here while ($Row = mysql_fetch_array($params)) { $jsondata[]= array('jsobjectfield1'=>$Row["dbtablefield1"], 'jsobjectfield2'=>$Row["dbtablefield2"], 'jsobjectfield3'=>$Row["dbtablefield3"], 'jsobjectfield4'=>$Row["dbtablefield4"]); }; echo("{\"TableData\": ".json_encode($jsondata)."};"); ?>
Javascript:
$.ajax({ url: 'getdata.php', type: "POST", data: entereddata, dataType: "json", timeout: (7000), //wait 7 seconds error: function(data) { }, //end of ERROR handling success: function(data) { // you'll find the data returned here: data.jsobjectfield1 }; // end of SUCCESS handling }); // end AJAXcall
HI Я не думаю, что вы можете сделать это напрямую …. Если вы хотите передавать данные взад и вперед между PHP и JS, вам нужно использовать xml http request .. вы можете найти очень хороший учебник, который поможет вам многое здесь. ….. http://www.tizag.com/ajaxTutorial/ajaxxmlhttprequest.php надеюсь, что это поможет … он наверняка помог мне, когда я начал … Я пытался сделать то же самое, что вы пытаетесь и я знал, что я пытаюсь смешивать скрипты на сервере и на стороне клиента
что вы здесь делаете …
1 передать список параметров php
2 php выполняет некоторую обработку (в вашей базе данных запроса case) и перекликается с желаемыми выходными переменными
3, которые возвращаются в JS
Если вы ищете прямой код … там вы идете … кредит идет на сайт, о котором я упомянул выше, это не мой код … Я действительно рекомендую вам перейти на этот сайт … вы узнаете много через короткое время …. надеюсь, что поможет
<html> <body> <script language="javascript" type="text/javascript"> <!-- //Browser Support Code function ajaxFunction(){ var ajaxRequest; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } // Create a function that will receive data sent from the server ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){ document.myForm.time.value = ajaxRequest.responseText; } } ajaxRequest.open("GET", "serverTime.php", true); ajaxRequest.send(null); } //--> </script> <form name='myForm'> Name: <input type='text' onChange="ajaxFunction();" name='username' /> <br /> Time: <input type='text' name='time' /> </form> </body> </html>
serverTime.php
<?php echo date("H:i:s"); ?>