2014-06-14 3 views
2

아약스로 매개 변수를 전달하는 데 많은 사람들이 문제가있는 것으로 보입니다. 나는 그 게시물 중 많은 것을 보았지만 아무 대답도 나를 위해 일하지 않았다.문자열을 Ajax에서 매개 변수로 전달

저는 Symfony에서 일하고 있습니다. 아약스에 의해 매개 변수를 전달하려고 테이블 데이터를 업데이트 할 수 있지만 자바 스크립트가 내 데이터를 읽지 만 내 컨트롤러에서이 데이터를받을 수없는 것 같습니다.

자바 스크립트 함수이다 :

나 콘솔 회 로그인하고 디버깅하는데
$('#form-save').click(function(){ 
    $('#myModal').modal('hide'); 
    var parent = $(this).parent().parent(); 
    var target = parent.attr('target'); 
    var title = $('#title-'+target); 
    var id = $('#form-info').attr('row'); 
    var date = $('#date-'+target); 
    var dateTime = new Date(date.text()); 
    var curr_date = ("0" + dateTime.getDate()).slice(-2);; 
    var curr_month = ("0" + (dateTime.getMonth() + 1)).slice(-2); 
    var curr_year = dateTime.getFullYear(); 
    var from = $('#from-'+target); 
    var till = $('#till-'+target); 
    var description = $('#description-'+target); 
    //First Log 
    console.log(target + title.text() + date.text() + from.text() + till.text() +description.text()); 

    $.ajax({ 
     type: "POST", 
     url: "{{ path('restaurant_my_events') }}", 
     data: { 
      action: 'update', 
      id: id, 
      title: title.text(), 
      date: curr_year + "-" + curr_month + "-" + curr_date , 
      from: from.text(), 
      till: till.text(), 
      description: description.text() 
     }, 
     dataType: "json", 
     success: function(response) { 
      //Second Log 
      console.log(response); 

     } 
    }); 

, 제 로그로부터의 출력은 :

0 hello world 06-14-2014 12:0612:06 description 2 

이것은 모든 입력 요소가 일치하는 것을 확인 , 데이터를 읽는 데 오류가없는 경우 두 번째 로그의 출력은 내 컨트롤러가 내 매개 변수를 수신했는지 확인하는 것입니다.

public function myEventsAction(Request $request){ 
    $restoID = 2; 
    $repository = $this->getDoctrine()->getRepository('LesDataBundle:Party'); 
    $events = $repository->findByRestoId($restoID); 

    if ($request->isXMLHttpRequest()) { 
     $status = false; 
     $action = $request->get('action'); 
     $partyID = $request->get('id'); 
     if($action == 'delete'){ 
       //Delete function 
     }else if($action == 'update'){ 
       //Update function 
     } 

     $test = $action ." + ". $partyID ." + ". $request->get('title') ." + " . $request->get('date') ." + " . 
      $request->get('from') ." + " . $request->get('till') ." + " . $request->get('description'); 

     return new JsonResponse(array(
      'id' => $partyID , 'request' => $request , 'test' => $test)); 
    } 


    return $this->render("LesRestaurantBundle:Admin:Events/myEvents.html.twig", 
       array('events' => $events)); 
} 

둘째 로그의 출력은 :

컨트롤러 함수이다

Object {id: "2", request: Object, test: "update + 2 + + NaN-aN-aN + + + "} 

는 I 만 파라미터 ID를 받았다. 왜?

+0

사전 요청 콜백 (DOM에서 요소를 제거 할 수있는 항목)에서 뭔가를하고 있습니까? 브라우저의 개발자 툴바에있는 네트워크 탭에 따라 서버에 어떤 POST 매개 변수가 전송됩니까? 첫 번째 로그 라인이 작성 될 때 curr_date/curr_month/curr_date의 값은 무엇입니까? – juanrpozo

+0

@juanrpozo 정보가 페이지에 고정되어 있지 않습니다.이 정보를 보내려면 동일한 소스의 데이터를 입력하여 필드를 미리 채우고 입력 필드의 값을 전송하는 팝업 공식이 열립니다. Ajax를 통해. 네트워크 로그에서 , 는 ** 양식 데이터 : 조치 : 갱신 ID : 2 제목 : 날짜 : NaN이는-AN-에서 aN 에서 : 까지 : 설명 : ** 당신은 숨겨진에 응답하지 않는 –

+0

.bs.modal 이벤트도 그렇습니까? $ .ajax 호출이 시작될 때 #title, #from, #till 및 #description 요소가 비어있는 것 같습니다. 모달을 숨기기 전에 데이터 객체를 정의하거나 $ .ajax 메서드를 호출 한 후 모달을 숨기는 경우 어떻게됩니까? – juanrpozo

답변

0

AJAX를 통해 전송하기 전에 encodeURIComponent()으로 문자열을 변환 해보세요.