0

私はプログラミングに不慣れで、htm / ajax/phpで遊んでいます。名前と動物の2つのテキストフィールドがあります。名前フィールドに名前を入力します。名前がデータベースに存在する場合、その名前に関連付けられているすべての動物が返され、重複する動物を動物フィールドに入力することはできません。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 |
4

1 に答える 1

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);
    }
});

json_encode()次に、PHPで次のように使用する必要があります。

<?php
$array = array(1,2,3,4,5,6);
echo json_encode($array);
于 2012-12-28T21:37:16.573 に答える