使用来自Ajax调用的PHP数组

时间:2012-12-28 21:29:18

标签: php jquery ajax

我是编程新手,我正在玩htm / ajax / php。我有两个文本字段,名称和动物。您在名称字段中输入名称。如果该名称存在于数据库中,则返回与该名称相关联的所有动物,并且不允许将重复的动物输入动物区域。我正在使用LiveValidation进行验证。

到目前为止,我的名字字段工作正常。它正在检查数据库并返回与该名称相关的所有动物的昏迷分隔列表,并将它们插入结果div中。但是结果div仅用于测试。我想要的是结果列表填充列表:

//animal must not include
var animal = new LiveValidation('animal');
animal.add(Validate.Exclusion, { 
    within: [
    // Insert ajax results here
    'cow' , 'pigeon', 'giraffe',
    ] 
} );

这是我的其余代码。我想我想要做的很简单,我只是不确定如何去做。感谢任何需要一些时间来帮助我的人。

HTML

<input type="text" id="name" name="name"/>
<input type="text" id="animal" name="animal" />
<div class="results"></div>   

的JavaScript

<script>
    //ajax call
    $(function(){

        $('#name').blur(function(){
            var inpval = $('#name').val();

            $.ajax({
                type: 'POST',
                data: ({name : inpval}),
                url: 'name_taken.php',
                success: function(data) {
                    $('.results').html(data);
                }
            });
        });
    });

    //validation from livevalidation.com
    //name must be present
    var name = new LiveValidation('name');
    name.add(Validate.Presence);

    //animal must not include
    var animal = new LiveValidation('animal');
    animal.add(Validate.Exclusion, { 
        within: [
            // How do I insert ajax results here?
            'cow' , 'pigeon', 'giraffe',
        ] 
    } );
</script>

PHP

//name_taken.php
$input_name = trim($_POST['name']);

foreach($names_table as $row){
    $name = $row['name'];

    if($name == $input_name){
        echo $row['animal'] . ',';
    }
}

表格结构

//$names_table
| 1 | Dave | animal1 |
| 2 | Mark | animal2 |
| 3 | Dave | animal3 |

1 个答案:

答案 0 :(得分:0)

使用您的ajax函数,您可以使用dataType来设置返回数据类型

//animal must not include
var animal = new LiveValidation('animal');
var obj = { 
    within: [
        'cow' , 'pigeon', 'giraffe',
    ] 
};
animal.add(Validate.Exclusion,  obj);

$.ajax({
    type: 'POST',
    data: ({name : inpval}),
    dataType: 'json',
    url: 'name_taken.php',
    success: function(data) {
        obj.within = new Array();
        for(var i in data){
            obj.within.push(data[i]);
        }
        animal.add(Validate.Exclusion,  obj);
    }
});

然后在你的php中你只需要像这样使用json_encode()

<?php
$array = array(1,2,3,4,5,6);
echo json_encode($array);