2015-11-07 2 views
0

Я хочу передать результаты запроса на javascript (я хочу сделать интерактивную викторину о видах рыб). Это похоже на json_encode, но структура моего php-массива затрудняет доступ? Даже console.log не работает, поэтому, вероятно, есть ошибка, хотя я проверял этот код больше, чем хотел бы признать. Я уверен, что ошибка в небольшой части javascript. Код (все это в файле .php):Передача данных из mysqli в javascript

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<?php 
$con = new mysqli("localhost", "root", "", "marinefish"); 
$query = "SELECT Commonname, Scientificname FROM allseafish"; 
$result = $con->query($query); 
while ($row = $result->fetch_array()){ 
     $rows[] = $row; 
} 

/* 
Structure rows: 
array(544) { 
    [0]=> 
    array(4) { 
    [0]=> 
    string(7) "Allfish" 
    ["Commonname"]=> 
    string(7) "Allfish" 
    [1]=> 
    string(11) "Omni pisces" 
    ["Scientificname"]=> 
    string(11) "Omni pisces" 
    } 
*/ 

mysqli_free_result($result); 
mysqli_close($con); 
?> 

<title>Untitled</title> 
</head> 
<body> 

<script type="text/javascript"> 
var ars = <?php echo json_encode($rows) ?>; 
console.log(ars); 
alert(ars[0][0]); 
</script> 
</body> 
</html> 

Любые предложения, или просто для понимания ссылки/учебные пособия очень приветствуются! Я пробовал: http://www.dyn-web.com/tutorials/php-js/json/multidim-arrays.php, который кажется очень четко объясненным, но не мог мне помочь. Я также попытался упростить структуру массива php, но безуспешно. И я попытался сменить echo json_encode($rows) на print(json_encode($rows)). Как вы, возможно, заметили, я новичок в этом, поэтому все основные советы помогут вам. Спасибо!

ответ

0

Лучшим решением было бы отделить от JavaScript PHP через пост/получать запросы, создав новую PHP страницу (например, Query.php), специфичный для ответа базы данных:

... MYSQL CODE ... 
echo json_encode($rows); // Echo everything into body 

и с помощью JQuery (или эквивалентный запрос Ajax):

$.ajax({ 
    type: "GET", 
    url: 'query.php', 
    dataType: "json", 
    success: function(your_php_reponse_as_json){ 
     console.log(your_php_reponse_as_json); 
    } 
}); 

Обратите внимание, что этот код будет рассинхронизированы как запрос на MYSQL запрос отправляется на другую страницу с помощью асинхронной JavaScript. Кроме того, вы можете настроить свой réponse запрос с $ _POST & $ _GET:

PHP код:

$get1 = $_GET['js_sent']; 
// Alternatively 
$post1 = $_POST['js_sent']; 

Edit: Вам нужно сериализованные данные перед отправкой. Для полного решения JQuery см здесь jQuery Ajax POST example with PHP

+0

Благодарим вас, отделяя javascript от PHP, заставив его работать, а также сделав кодировку более понятной. –

0
$.post("checkproduct.php", {"useremail" : emailVal}, function(data) { 

// использовать данные, возвращаемые из checkproduct.php.the значения, возвращаемого из checkemail.php извлекается в виде данных.

});

Вышеупомянутый метод почтового обмена для отправки переменной на checkproduct.php здесь мы передаем useremail, а значение равно emailVal, и это также переменная. и в checkproduct.php вам нужно эхо/вернуть результат. и результирующие данные могут использоваться в функции как данные

Смежные вопросы