首页 新闻 搜索 专区 学院

求救!php返回的数组 怎么写才能输出到html的ul里面?

0
悬赏园豆:50 [已解决问题] 解决于 2015-05-15 15:24
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="js/jquery.rotate.min.js"></script>
<!-- Demo start  -->
<div class="rotary">
    <div class="rotaryArrow" id="rotaryArrow"></div>
    <div class="list">
        <ul id="li">
        </ul>
    </div>
 <script type="text/javascript">
    $.ajax({
        type:'POST',
        url:'test1.php',
        dataType: 'json',
        data:['li'], 
        cache:false,
        error: function(){ 
            alert('出错了!'); 
            return false; 
        },
success:function(json)
{
    
}   
    });
</script>

救急!success里面不会写了!php里面输出的li 应该怎么写才会加载到上面的ul里面?

 

下面是PHP端代码

<?php
$li=array(
     '1' => array('<li>11111123</li>'), 
    '2' => array('<li>123123123</li>'), 
    '3' => array('<li>123123123</li>'), 
    '4' => array('<li>123123123</li>'), 
    '5' => array('<li>123123123</li>'), 
    '6' => array('<li>123123123</li>'),
    );
echo json_encode($li);  
?>
YaYou~的主页 YaYou~ | 初学一级 | 园豆:6
提问于:2015-05-15 14:57
< >
分享
最佳答案
3
success: function(json){
    var list = '';
    for(var o in json){
        list += json[o];
    }

    $("#li").html(list);
}

另外,你的PHP端返回的时候,建议加上header:

header("Content-Type: application/json;");

echo json_encode($li);

 

再次建议一下,PHP端返回的数据最好是json,而不应该包含<li>这样的HTML标签,否则之后某天前端的样式改成其他的(不是ul, li了),你岂不是还要修改服务器端的返回值?

收获园豆:50
ohmygirl | 菜鸟二级 |园豆:304 | 2015-05-15 15:21

爱你!好用了!!!!爱死你了!

 

YaYou~ | 园豆:6 (初学一级) | 2015-05-15 15:24

@上位者的怜悯: 

是这样的,上面所说的“键全是字符串”,是指类似“str”=> '', 'name' => '',这样的形式。而对于数字的,即使加上了引号,底层还是会当做数字索引处理的:

(1):

$li = array(
    '1' => array('<li>11111123</li>'),
    '2' => array('<li>123123123</li>'),
    '3' => array('<li>123123123</li>'),
);  

$li2 = array(
    1 => array('<li>11111123</li>'),
    2 => array('<li>123123123</li>'),
    3 => array('<li>123123123</li>'),
);  

$json1 =  json_encode($li);
$json2 =  json_encode($li2);

var_dump( $json1 === $json2 );

(2)

$arr = array(
    '1' => 'test',
);  
$arr[1] = 'new test';
print_r( $arr );  //覆盖了
ohmygirl | 园豆:304 (菜鸟二级) | 2015-05-15 15:41

@ohmygirl: 如此看来我理解错误,答案只是巧合

上位者的怜悯 | 园豆:172 (初学一级) | 2015-05-15 15:59

@上位者的怜悯: 额,其实不是巧合。不管数组是不是字符串索引,返回的json, $.each循环都是正确的。。

ohmygirl | 园豆:304 (菜鸟二级) | 2015-05-15 16:15
其他回答(2)
1

为了男神我也是刚刚看了一下php的数组,但是楼主你这是嵌套数组么,前端获取的js对象是不是这样的:

{"1":["<li>fdsaf</li>"],"2":["<li>fdsaf</li>"],"3"...}

因为本人对于php完全不会,以上是刚刚花了2分钟看的,所以大胆做出以下答案:

var result="";
$.each(json,function(k,v){
    result+=v[0];
});
$("#li").html(result);
上位者的怜悯 | 园豆:172 (初学一级) | 2015-05-15 15:13
1

$(function() { $.ajax({ type: 'POST', url: 'test1.php', dataType: 'json', data: ['li'], cache: false, error: function() { alert('出错了!'); return false; }, success: function(json) { if(json.length){for(var i=0;i<json.length:i++){

  $("#li").append(json[i]);

}}} }); });

上兵伐谋 | 园豆:547 (小虾三级) | 2015-05-15 15:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册