2014-04-27 3 views
0

가 여기 내 아약스Ajax가 '정의되지 않은'데이터를 MySql에 전달하는 이유는 무엇입니까?

$(".submit").click(function(){ 

    var vp = $("input#vehicle_plate").val(); 
    var vm = $("input#vehicle_model").val(); 
    var vt = $("input#vehicle_type").val(); 
    var da = $("input#date_acquired").val(); 
    var ad = $("input#assigned_driver").val(); 
    var dataString = 'vehicle_plate='+ vp + '&vehicle_model='+ vm + '&vehicle_type='+ vt + '&date_acquired='+ da + '&assigned_driver='+ ad; 

    $.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: dataString, 
    success: function(){ 
    $('.success').fadeIn(200).show(); 
    $('.error').fadeOut(200).hide(); 
    } 
    }); 
    return false; 

    }); 

입니다 그리고 여기 내 'dataString'을 통과 내 PHP입니다

<?PHP 
    include("db.classes.php"); 
    $g = new DB(); 
    $g->connection(); 
    if($_POST) 
    { 
    $vehiclePlate = $g->clean($_POST["vehicle_plate"],1); 
    $vehicleModel = $g->clean($_POST["vehicle_model"],1); 
    $vehicleType = $g->clean($_POST["vehicle_type"]); 
    $assignedDriver = $g->clean($_POST["assigned_driver"],1); 
    $ad = date('Y-m-d', strtotime($_POST["datepicker"])); 
      $g->add($vehiclePlate, $vehicleModel, $vehicleType, $assignedDriver, $ad);          
    } 
     $g->close(); 
     ?> 

그리고 여기 내 데이터베이스 쿼리입니다

public function add($vehiclePlate, $vehicleModel, $vehicleType, $assignedDriver, $ad) 
    { 
     $sql = "insert into vehicles(`vehicle_plates`,`DA`,`type`, `model`, `driver`) values('$vehiclePlate', '$ad', '$vehicleType', '$vehicleModel', '$assignedDriver')"; 

     if(!mysql_query($sql)) 
     { 
      $this->error = mysql_error(); 
      return true; 
     } 

     else 
     { 
      return false; 
     } 
    } 

아약스는 성공적인 반환하지만 내가 시도하고 내 databse에 테이블을 볼 때 삽입 된 행이 알 '정의되지 않은'이 원인이 무엇입니까?

는 편집 : - URL을 통해 전달하기 위해 사용되지만 POST에서 작동하지 않습니다 문자열 -이 같은 요청 여기

<div id="rform"> 
     <form action = "list.php" method="post"> 
     <fieldset> 
       <legend>Fill Up the Form</legend><br> 
      <div> 
       <label class="label-left">*Vehicle Plate:</label> 
       <input class="label-left" type="text" name="vehicle_plate" id="inputbox1" value maxlength="50"> 
      </div> 

      <div> 
       <label class="label-left">*Vehicle Type:</label> 
       <select class="label-left" id="inputbox" name ="vehicle_type" onchange="document.getElementById('text_content').value=this.options[this.selectedIndex].text"> 
        <option value="Motorcycle">Motorcycle</option> 
        <option value="Tricycle">Tricycle</option> 
        <option value="Pick-up">Pick-up</option> 
        <option value="Truck">Truck</option> 
       </select><br><br> 
      </div> 

      <div> 
       <label class="label-left">*Vehicle Model:</label> 
       <input class="label-left" type="text" name="vehicle_model" id="inputbox" value maxlength="50"> 
      </div> 

      <div> 
       <label class="label-left">Date Acquired:</label> 
       <input class="label-left" name="date_acquired" id="datepicker" value maxlength="50"><br><br> 
      </div> 

      <div> 
       <label class="label-left">Assigned Driver:</label> 
       <input class="label-left" type="text" name="assigned_driver" id="inputbox" value maxlength="50"><br><br> 
      </div> 

      <div> 
       <label class="label-custom" color = red>NOTE: "*" Fields are required</label><br><br> 
      </div> 
      <span class="error" style="display:none"> Please Enter Valid Data</span> 
      <span class="success" style="display:none"> Registration Successfully</span> 

      <input id="button" type="submit" value="Add" name = "subBtn" class = "submit"/> 

     </fieldset> 
     </form> 
     </div> 
+2

무엇 디버깅 당신은 시도? 첫 번째는 javascript vars를 console.log()로 테스트 한 다음 var_dump()가있는 ok php 인 경우 – Steve

+0

HTML을 볼 수 있습니까? –

+0

@Rahil 나는 내 질문을 업데이트했다. – fanboime12

답변

2

그런데 문제는 셀렉터입니다 요소이므로 위 선택자가 작동합니다.) :

var vp = $("input[name=vehicle_plate]").val(); 
var vm = $("input[name=vehicle_model]").val(); 
var vt = $("input[name=vehicle_type]").val(); 
var da = $("input[name=date_acquired]").val(); 
var ad = $("input[name=assigned_driver]").val(); 

값을 서버에 올바르게 전달합니다.

+0

Thos가 효과가있었습니다! 고마워요 젠체! – fanboime12

0

당신이 GET처럼 dataString을 연결하는 내 HTML입니다 .

당신은 자바 스크립트 객체 내부에 POST 데이터를 전달해야한다 : 등등

data: { vehicle_plate: vp, vehicle_model: vm, vehicle_type: vt } 

... 그리고 있습니다. 귀하의 입력 셀렉터가 어떤 id 속성이없는 대신 자신의 name 속성에 의해을 선택해야합니다 (또는 당신이 당신의 HTML 입력에 id 속성을 줄 수

var vp = $("input#vehicle_plate").val(); 
var vm = $("input#vehicle_model").val(); 
var vt = $("input#vehicle_type").val(); 
var da = $("input#date_acquired").val(); 
var ad = $("input#assigned_driver").val(); 

:

+0

제가 이것을 시도하겠습니다. – fanboime12

0

사용 serialize() 그것은 간단하고 오류가 적은 경향이있다.

$(".submit").click(function() { 

    var dataString = $("#rform form").serialize(); 

    $.ajax({ 
     type: "POST", 
     url: "process.php", 
     data: dataString, 
     success: function() { 
      $('.success').fadeIn(200).show(); 
      $('.error').fadeOut(200).hide(); 
     } 
    }); 
    return false; 

}); 
관련 문제