实时名称可用性检查与Ajax和Laravel


Live name Availability check with Ajax and Laravel

我在name列的products表中检查产品的实时名称有问题。我需要帮助。我只收到checking...消息,但没有收到OK或名称not available message。我的查询有问题吗?

我的ajax

<SCRIPT type="text/javascript">
$(document).ready(function(){
$("#name").change(function() { 
var usrN = $("#name").val();
if(usrN.length >= 4)
{
$("#status").html('<img src="images/loadingAnimation.gif"> Checking ...');
    $.ajax({  
    type: "POST",  
     url :"{{action('Product'ProductController@Check')}}", 
    data: "name="+ usrN, 
    success: function(msg){  
   $("#status").ajaxComplete(function(event, request, settings){ 
    if(msg == 'OK')
    { 
        $("#name").removeClass('object_error'); 
        $("#name").addClass("object_ok");
        $(this).html('<img src="images/success.png" align="absmiddle"> OK<');
    }  
    else  
    {  
        $("#name").removeClass('object_ok'); 
        $("#name").addClass("object_error");
        $(this).html(msg);
    }  
   });
 } 
  }); 
}
else
    {
    $("#status").html('<font color="red" style="margin-left:125px;">something went wrong <strong></strong> .</font>');
    $("#name").removeClass('object_ok'); 
    $("#name").addClass("object_error");
    }
});
});

</SCRIPT>

我的控制器

 public function Check(Request $request)
    {
    $product= new Product;  
    $name = $request->get('name');  
    $product->name = $request->get('name');

    $query = 'DB::table('products')->select('name')
             ->where('name','=',$name)
             ->first();
        if($query)
        {
            echo"name not available!";
        }
        echo"name available!";
    $product->save();

我的形式
<input type="text" name="name" id="name" style="margin-top:35px;" />
<span id="status"></span>

您正在检查客户端站点:

if(msg == 'OK')

但是您从未从服务器发送该字符串,并且还使用return而不是echo。下面的方法可能会解决你的问题,但仍然不是我要使用或推荐的,但无论如何:

// In your check method
if($query)
{
    return 'error';
}
$product->save();
return 'ok'; // ok is lower case so use if(msg == 'ok')

不要使用echo。请先阅读Laravel文档,并检查这一点,并找到如何使用JSON数据类型作为响应。


标记时始终使用精确的version