我通过ajax验证表单,现在我已经使用了bootstrap的alert alert-danger
和alert alert-success
类来提供ui
,但是返回,它只是呈现为没有所需ui的简单html,我做错了什么?
$('#url').keyup(function(){
var val = $('#url').val();
$.post(
'<?php echo base_url();?>index.php/validator/check_for_url',
{ajax:1,url:val},
function(data){
$('#url_feedback').html(data);
}
);
});
// php backend call via ajax
function check_for_url()
{
if(isset($_POST['ajax']) && $_POST['ajax'] == 1)
{
$url = $_POST['url'];
if(!preg_match('%^((https?://)|(www\.))([a-z0-9-].?)+(:[0-9]+)?(/.*)?$%i', $url))
{
echo '<p style="alert alert-danger">Invalid URL, make sure it\'s like http:// or https://</p>';
}
else
{
$query = $this->db->get_where('users',array('user_url'=>$url));
if($query->num_rows() > 0)
{
echo '<p style="alert alert-danger">URL Address already exists...</p>';
}
else
{
echo '<p style="alert alert-success">URL address can be used...</p>';
}
}
}
}
答案 0 :(得分:0)
您应该查看jQuery.ajax()文档中的dataType设置。
您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西将是以字符串形式返回)。可用的类型(以及作为成功回调的第一个参数传递的结果)是:
我的猜测是你的HTTP服务器由于某种原因没有返回正确的MIME类型,因此jQuery可能会退回到将其视为常规字符串。