2014-12-05 4 views
0

부트 스트랩 모달에서 Laravel의 Ajax를 사용하여 데이터를 저장하려고합니다. 여기 내 코드는 다음과 같습니다Laravel에서 Ajax를 통해 데이터를 저장하지 못했습니다.

route.php

Route::get('/repository/', '[email protected]'); 
Route::post('/repository/', '[email protected]'); 

지금 repository.index

@section('popups') 
<!-- Modal --> 
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> 
     <h4 class="modal-title" id="myModalLabel">Modal title</h4> 
     </div> 
     <div class="modal-body"> 

      <div class="row row-bg"> 
       <div class="col-md-12"> 
        <input type="text" class="text-field" style="width:100%; margin-bottom: 10px;" id="name" name="name" placeholder="URL name*: "> 
        {{$errors->first('name','<span class="error_message postShake"><i class="fa mr fa-exclamation-triangle"></i> Please enter the name</span>')}} 
       </div> 
       <div class="col-md-12"> 
        <input type="text" class="text-field" style="width:100%; margin-bottom: 10px;" id="url" name="url" placeholder="Enter the URL*: "> 
       </div> 
       <div class="col-md-12"> 
        <textarea class="text-field" style="width:100%; margin-bottom: 10px;" id="description" name="description" placeholder="Enter the URL*: "></textarea> 
       </div> 
      </div> 

     </div> 
     <div class="modal-footer"> 
     <button type="submit" class="whiteButton" data-dismiss="modal">Close</button> 
     <button type="button" id="add" name="add" class="blueButton">Save changes</button> 
     </div> 
    </div> 
    </div> 
</div> 


<script> 
    $(document).ready(function(){ 
     $('#add').click(function(e){ 
      e.preventDefault(); 
      var name=$(this).find('input[name=name]').val(); 

      //post Ajax 
      $.post('/repository', 
      { 
       "name": $(this).find('input[name=name]').val(), 
       "url": $(this).find('input[name=url]').val(), 
       "description": $(this).find('input[name=description]').val() 
      }, function(data){ 
       // console.log(data); 
      }, 'json'); 
     }); 
    }); 
</script> 
@stop 

그리고 RepositoryController.php

<?php 

class RepositoryController extends BaseController{ 

    public function index(){ 
     return View::make('repository.index'); 
    } 


    public function store(){ 

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

     if($validation->fails()){ 
      return Redirect::back()->withInput()->withErrors($validation->messages()); 
     } 
     $link = new Link; 

     $link->name=Input::get('name'); 
     $link->url=Input::get('url'); 
     $link->description=Input::get('description'); 

     $link->save(); 
     return Redirect::route('repository.index'); 
    } 


} 

Link.php 모델

어떤 문제가 될 수 있습니다 콘솔에서

<?php 

class Link extends Eloquent{ 

    public static $rule= ['name'=>'reuiqred', 
          'url'=>'required', 
          'description'=>'required']; 

} 

, 그것은 내게 오류를 준다? 또한 유효성 검사 오류 메시지가 모달에 나타나지 않습니다.

+1

아약스와 리디렉션을 수정. – itachi

+0

이 코드는 어떻게 작동합니까? 나는 Laravel에서 Ajax를 배우고 있는데, 리다이렉트 대신 – user1012181

+0

대신 Response :: json()을 사용한다. –

답변

0
는 다음

$('#add').click(function() { 
name = document.getElementById('name').value; 
url = document.getElementById('url').value; 
description = document.getElementById('description').value; 
$.post('/repository', {'name': name, 'url': url, 'description': description}, function(data) { 

    var parsed = JSON.parse(data); 

    var html = 'content echoed in your post function goes here'; 

    $('#requestStatus').append(html); 
}).success(function() { 
    $('#comment').val(''); 
    $('#sentSuccess').html('Something happened!').show().delay(5000).fadeOut(); 
}).fail(function() { 
    $('#sentFailed').html('Nothing happened').show().delay(5000).fadeOut(); 
}); 
}); 

및 게시물 기능

public function store(){ 

$name = Input::get('name'); 
$url = Input::get('url'); 
$description = Input('description'); 

$data = array('name' => $name , 'url' => $url); 
    $validation=Validator::make($data, Link::rules()); 

    if($validation->fails()){ 
     return Redirect::back()->withInput()->withErrors($validation); 
    } 
    $link = new Link; 

    $link->name= $name; 
    $link->url= $url; 
    $link->description= $description; 
    $link->save(); 
//now to return a message 
    echo json_encode(array('name' => $name, 'url' => $url, 'description' => $description); 
} 

와 JSON을 변경

하고 링크

<?php 
class Link extends Eloquent{ 
public $table = 'table_name'; 

public static function rule() 
{ 
$rule= ['name'=>'reuiqred', 
         'url'=>'required', 
         'description'=>'required']; 
return $rule; 
} 
} 
+0

나는 여전히 같은 문제가있다 :'리소스를로드하지 못했습니다 : 서버가 500의 상태로 응답했습니다 (내부 서버 오류) ' – user1012181

+0

포스트 기능의 코드를 수정 해주세요 리다이렉트 대신에 데이터를 보내주세요. (내가 한) –

+0

여전히 같은 오류! – user1012181

0

수 귀하의 경로를 같은

뭔가를 수정해야 그 :

Route::get('/repository/index', '[email protected]'); 
Route::post('/repository/store', '[email protected]'); 

js도 수정하십시오. 대신 이름의

$.post('/repository', 
     { 
      "name": $('#name').val(), 
      "url": $('#url').val(), 
      "description": $('#descsription').val() 
     }, function(data){ 
      // console.log(data); 
     }, 'json'); 

귀하의 ID는

을 바인드합니다 그리고 첫 손에 어떤 이해가되지 않습니다 함께 컨트롤러

return Renurn::json($link); 
관련 문제