Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每当我尝试将JSON数据加载到listview或select菜单时,都不会显示任何内容_Javascript_Php_Jquery_Arrays_Json - Fatal编程技术网

Javascript 每当我尝试将JSON数据加载到listview或select菜单时,都不会显示任何内容

Javascript 每当我尝试将JSON数据加载到listview或select菜单时,都不会显示任何内容,javascript,php,jquery,arrays,json,Javascript,Php,Jquery,Arrays,Json,因此,基本上,当我从服务器脚本retrieve.php加载数据时,它会使用$'result'.htmldata在showlist.html中显示。但是,每当我试图用这些数据加载我的listview或selectbox时,什么都不会发生。请告知我可能做错了什么 //服务器端脚本-retrieve.php <?php $pdo = new PDO('mysql:host=localhost;dbname=sports_rush;charset=utf8', 'root', '');

因此,基本上,当我从服务器脚本retrieve.php加载数据时,它会使用$'result'.htmldata在showlist.html中显示。但是,每当我试图用这些数据加载我的listview或selectbox时,什么都不会发生。请告知我可能做错了什么

//服务器端脚本-retrieve.php

<?php

     $pdo = new PDO('mysql:host=localhost;dbname=sports_rush;charset=utf8', 'root', '');
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    try {

      $query = "SELECT eid,event_title FROM event_table";
      $result = $pdo->prepare($query);
      $result->execute();
     while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
       echo json_encode($row);
    }
   $db_connection = null;
     } catch (PDOException $e) {
       echo $e->getMessage();
   }
//I found this recursive function online to enable me force convert to UTF-8 all the strings contained in an array
function utf8ize($d) {
if (is_array($d)) {
    foreach ($d as $k => $v) {
        $d[$k] = utf8ize($v);
    }
} else {
    return utf8_encode($d);
}
return $d;
}
?>

//FILE THAT SHOWS MY DATA FROM SERVER-SIDE SCRIPT - Showlist.html
<!DOCTYPE html> 
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
<title>SHOW LIST</title>
<link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" type="text/css" media="screen" href="css/style.css"/>
<link rel="stylesheet" href="jquery-mobile/jquery.mobile-1.4.2.min.css" />
<script src="jquery-mobile/jquery-1.9.1.min.js"></script>
<script src="jquery-mobile/jquery.mobile-1.4.2.min.js"></script>
</head> 
<body> 

<div data-role="page" id="home_page">
<div data-role="header" data-theme="a">
<h1>Header</h1>

</div>
<div data-role="content">
<select name="zip" id="zip" onChange="initializeRetrieve()"></select>
<div id="result"></div>
<ul data-role="listview" data-inset="true" id="postallist"></ul>
</div>
</div>
<script>
$(function(){       
 $.ajax({
 url     :   'retrieve.php',
 type    :   "POST",
 success :   function(data){
 var output = '';
 $('#result').html(data);  //This is just a test to see my data
 $.each(data, function (index, value) {
output += '<li><a href="#">' + value.eid + '</a></li>';
});
$('#postallist').html(output).listview("refresh");
}
});
});

function initializeRetrieve(){
var $select5 = $('#zip');
//request the JSON data and parse into the select element
$.getJSON("retrieve.php", function(data){

//iterate over the data and append a select option where eid is in the json file
$.each(data, function(key, value){
$select5.append('<option>' + value.eid + '</option>');
});
});
}
</script>
</body>
</html>

您是否尝试过使用GET方法

尝试将请求放入$document.ready

 $(document).ready(function(){
    $.getJSON('retrieve.php', function(data) {
       $('#result').html(data);
    })
});

//终于开始工作了。问题出在我的showlist.html中。需要在页面打开时更改初始化

<html>
<meta charset="utf-8" />
<title>SHOW LIST</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
</head>
<body>
<div data-role="page" id="index">
    <div data-role="header" data-position="fixed">
       <h1>Sports Rush Events</h1>
    </div>

    <div data-role = "content">
          <div class="content-primary">
             <ul id="list" data-role="listview" data-filter="true"></ul>
          </div>
           <div id="result"></div>
    </div>

<script type="text/javascript">
$(document).on('pagebeforeshow', '#index', function(){ 
$.ajax({
url     :   'retrievelist.php',
type    :   "POST",
dataType: 'json',
success : function(data){
$.each(data,function(i,dat){
$("#list").append("<li><b>ID: </b>"+i+"</br><b> Name: </b>"+dat.event_title+"</li>");
                 });
$("#list").listview('refresh');
}
     });
         });
    </script>
    <div data-role="footer" data-position="fixed">
    </div>
</div>

打开Chrome控制台,网络,然后打开您的请求,看看是否有任何数据实际响应。我刚刚尝试使用Chrome控制台,它显示了一个包含我全部json数据的响应。但它也很奇怪,因为它包括标记和我的json数据。例如,它有[{MY JSON DATA IS ALL IN HERE}],这不会有什么区别,因为脚本位于正文的末尾。