2012-12-28 67 views
0

我是編程新手,我正在玩弄htm/ajax/php。我有兩個文本字段,名稱和動物。您在名稱字段中輸入一個名稱。如果名稱存在於數據庫中,它將返回與該名稱關聯的所有動物,並且不允許將重複動物輸入動物字段。我正在使用LiveValidation進行驗證。使用來自Ajax的PHP數組調用

到目前爲止,我的名稱字段工作正常。它正在檢查數據庫並返回與該名稱關聯的所有動物的彗星分隔列表,並將它們插入到結果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 | 

回答

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); 
+0

非常感謝您的快速回復。我現在正在工作,它在一個彈出窗口中提醒這些值。但是,現在我將如何將這些值填充到驗證列表中? – user1738750

+0

'內部'需要在那裏嗎?把它移到add方法之外,如果我沒有弄錯,你應該只能做'animal.push'。 –

+0

LiveValidation需要在那裏工作。我應該澄清,我不需要添加到列表中。這只是一個例子。我需要更換清單。 :) – user1738750