2013-11-23 52 views
0

在laravel控制器我一個代碼一樣,錯誤發送到從laravel控制器AJAX請求,並改變DIV鑑於acordingly

$validator = Validator::make(Input::all(), $rules); 


     if ($validator->fails()) 
     { 

      $data = array('errors' => $validator->errors()->toArray());     
        return Response::json($data); 

     } 

發送的驗證錯誤的Ajax請求現在在阿賈克斯獲得我想要它(驗證錯誤)來打動文本區域和錯誤顯示div。爲此我正在這樣做。

bla bla blaala 

success:function(data, textStatus, xhr, error){ 

         if(data == "OK") 
         { 
          $('div.result').html('You have successfully posted ! Please refresh to see your post <hr/>'); 
          //window.location.reload(true); 

         } 
         else 
         { 
          // $('div.arr').data(data.errors); 

          //alert("---"+data); 
          $('div.result').html('Your post can not be possible ! Please check the text bOx ! <hr/> '); 
          $('div.arr.errors').val(data.errors); 
          $("#ask").attr("disabled", false) 



         } 

我想在這個

<div class="arr control-group{{ $errors->first('about', ' has-error') }}"> 

的效果,但只有錯誤在

<div class="result" style="color:red;"> 


</div> 

工作。

如何收集錯誤並在視圖中顯示?

預先感謝您\ M/

回答

1

只是傾銷JavaScript數組/對象到一個div將無法正常工作。你幾乎有兩個選擇讓它工作。您可以使用PHP遍歷數組,然後在那裏創建HTML並將HTML作爲字符串發送給Javascript,並且您只需將div的innerHTML設置爲字符串即可。或者您可以保持現在的樣子,並使用Javascript和jQuery遍歷對象並在客戶端填寫div。

做它在客戶端

jQuery.each(data.errors, function(i, val) 
{ 
    error = document.createElement('SPAN'); 
    error.innerHTML = val; 
    error.className = 'error'; // Can set the css class of the element 
    error.style.backgroundColor = '#F00'; // Can set other css stuff as well =) 
    $('div.arr.errors').append(error); 
}); 

做這在服務器端(仍需要進行一些客戶端的工作)

// PHP Stuff 
$html = "<div class='errorClass'>"; 
foreach($validator->errors()->toArray() as $error) 
{ 
    $html .= "<span>" . $error . "</span>"; 
} 
$html .= "</div>"; 
return Response::json(array('html' => $html)); 

// Javascript Stuff 
$('div.arr.errors').html(data.html); 

注:我沒那麼偉大與jQuery,但我不相信$('div.arr.errors')將與你有什麼。我會減少對自己的困惑,只給它一個錯誤數組的ID或什麼,只是使用$('#errorArray')

+0

感謝您的答覆兄弟!我會盡力實施它。並讓你知道是否有任何錯誤。請加入我的網站[點擊此處](http://dolovers.com/auth/signin):)謝謝! –