2015-06-26 133 views
1

我正在嘗試創建一個AJAX窗體,該窗體顯示錯誤或成功消息時正確填寫字段。這是我的代碼:抓取json對象數據

$('#name').keyup(function() { 
    var name = $('#name').val(); 
    $.post('core/name_processing.php', { name: name }, function(data) { 
     if (data.name === 'nodata') { 
      $('#name_check').html(' '); 
      $('.input_feedback').fadeOut('fast'); 
      $('.input_success').fadeOut('fast'); 
     } else if (data.name === 'success') { 
      $('#name_check').html(data.name); 
      $('.input_feedback').fadeOut('fast'); 
      $('.input_success').fadeIn('fast'); 
     } else { 
      $('#name_check').html(data.name); 
      $('.input_feedback').fadeIn('fast'); 
     } 
    }); 
}); 

'#NAME'是輸入字段。

這裏的PHP:

<?php 

$result = array(); 

if (isSet($_POST['name'])) { 
    if (empty($_POST['name'])) { 
     $result['name'] = 'nodata'; 
    } else { 
     $name = $_POST['name']; 
     if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
      $result['name'] = "Only letters and white space allowed"; 
     } else if (strlen($name) > 10) { 
      $result['name'] = 'success'; 
     } else { 
      $result['name'] = strlen($name).' characters'; 
     } 
    } 
} 

echo json_encode($result); 

?> 

的時候我沒有使用數組的代碼工作就好了,但因爲我想添加更多的輸入字段我需要在一個數組中返回的數據。問題似乎是data.name不是一個有效的值,它不會像它應該那樣獲取數據。我怎樣才能解決這個問題?

數據返回{"name":"... characters"}{"name":"nodata"}{"name":"success"}這似乎是正確的。

回答

1

你是失去功能屬性和數據類型:

$.post('core/name_processing.php', { name: name }, function(data) { 
    .... 
}, 'json'); 

的信息,請參閱http://api.jquery.com/jquery.post/

+0

這是一個錯字,抱歉。這是在我的代碼,並與它,問題依然存在。 – Sander

+0

添加'json'作爲最後一個$ .post參數 – sklwebdev

+0

阿哈,這是做的伎倆,謝謝! – Sander