2014-12-03 5 views
-1

그래서 jquery 아약스의 직렬화 부분에 문제가 있다고 생각합니다. 그것은 어떤 정보도 데이터베이스에 넣지 않고 왜 그럴지 모릅니다! 웹 페이지의 입력 컨트롤에있는 변수는 PHP 처리 페이지로 전달되지 않습니다. 나는 여기서 무엇을 잘못하고 있니? 이 사람들과 함께 여기에 도움이 필요해! 이것은 나에게 아주 새로운 것입니다.데이터가 데이터베이스에 삽입되어 있지 않습니다.

웹 페이지 :

<form name="main_form" id="main_form" method="post"> 
    <div id="ChangeAddressDialog" title="Change of Address"> 
     <p>Mailing Address: <input type="text" id="Address1" name="Address1" /></p> 
     <p>Mailing Address 2: <input type="text" id="Address2" name="Address2" /></p> 
     <p>City: <input type="text" id="City" name="City" /></p> 
     <p>State: <input type="text" id="State" name="State" maxlength="2" /></p> 
     <p>Zip Code: <input type="text" id="Zip" id="Zip" maxlength="10" /></p> 
     <p>Country: <input type="text" id="County" name="Country" /></p> 
     <input type="hidden" id="change_of_address_form" name="change_of_address_form" /> 
    </div> 
    </form> 

    $('#ChangeOfAddress').click(function() { 
     //change of address dialog 
     $("#ChangeAddressDialog").dialog({ 
      width:500, 
      modal:true, 
      closeOnEscape:true, 
      buttons: [ 
       { text: "Ok", type: "submit", click: function() { 
         $.ajax({ 
          url: "classes/add-address.php", 
          type: "POST", 
          data: $("#main_form").serialize(), 
          dataType: 'json', 
          error: function(SMLHttpRequest, textStatus, errorThrown){ 
           alert("An error has occurred making the request: " + errorThrown) 

          }, 
          success: function(result){ 
           //do stuff here on success such as modal info 
           //$("#main_form").submit(); 
           $(this).dialog("close"); 
          } 
         }) 
        } 
       }, 
       { text: "Close", click: function() { $(this).dialog("close"); } } ] 
     });//end dialog 
    }); 

PHP 처리 페이지 :

<?php 
require_once('../config.php'); 

//$sqlCheck = ''; 
$parcel_id = isset($_POST['ParcelId']) ? $_POST['ParcelId'] : null; 
$address1 = isset($_POST['Address1']) ? $_POST['Address1'] : null; 
$address2 = isset($_POST['Address2']) ? $_POST['Address2'] : null; 
$city = isset($_POST['City']) ? $_POST['City'] : null; 
$state = isset($_POST['State']) ? $_POST['State'] : null; 
$zip = isset($_POST['Zip']) ? $_POST['Zip'] : null; 
$country = isset($_POST['Country']) ? $_POST['Country'] : null; 

$db = new ezSQL_mysql(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST); 
$result = $db->query("INSERT INTO change_of_address (parcel_id, address_1, address_2, City, State, Zip, Country) VALUES ('" . $parcel_id . "','" . $address1 . "','" . $address2 . "','" . $city . "','" . $state . "','" . $zip . "','" . $country . "')"); 
if ($result == 1) { 
    echo '{"success":true}'; 
} else { 
    echo '{"success":false}'; 
} 

//$sqlCheck = "INSERT INTO change_of_address (parcel_id, address_1, address_2, City, State, Zip, Country) VALUES ('" . $parcel_id . "','" . $address1 . "','" . $address2 . "','" . $city . "','" . $state . "','" . $zip . "','" . $country . "')"; 

//echo json_encode($sqlCheck); 


?> 
+1

** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 이것은 ** 무섭게 불안하다. 모든 사용자 매개 변수가 [제대로 이스케이프 처리]되어 있는지 확인해야합니다 (http://bobby-tables.com/php). 응용 프로그램이 손상 될 위험이 있습니다. 가능하면 준비된 문장과 자리 표시자를 사용하여 그 종류의 오류에 노출되지 않도록하십시오. ['ezSQL_mysql'] (http://docs.phpvms.net/internals/d5/d95/classez_s_q_l__mysql.html)에는 긴급하게 ** 사용해야하는 '이스케이프 (escape)'기능이 있습니다. – tadman

+0

@JonathanKuhn 감사합니다. 나는 그것을 form 태그에 추가했지만 db :/ – maryjane

+0

@tadman에 내부적으로 삽입하지는 않았다. 기능을 얻은 다음 나중에 보안 문제를 해결해야합니다. 사장님은 그걸 가지고 놀아 주길 원합니다. – maryjane

답변

1
data: $("#main_form").serialize(), 

형태 요소main_form라는 이다. jquery 선택기가 id을 찾고 있습니다. 양식 태그에서 name="main_form"id="main_form"으로 변경하면 문제가 해결됩니다.

+0

감사합니다. 나는 그것을 form 태그에 추가했지만 여전히 db에 삽입하지 않는다 :/SQL 문을 출력하여 변수가 전달되는지 확인하려면 어떻게해야합니까? 'echo json_encode ($ sqlCheck);를 시도했지만 작동하지 않습니다. – maryjane

+0

브라우저 (F12)에서 개발자 도구를 열고 Ajax 요청을보십시오. 게시 요청을 검사 할 때 어떤 변수가 전송되는지 확인할 수 있습니다. 처리 페이지에서 print_r ($ _ POST)을 사용하여 전송 된 내용을 볼 수도 있습니다. 아약스 요청을 살펴보면 응답 본문에 해당 출력이 표시됩니다. –

+0

어디에서 print_r을 넣을 수 있습니까? 웹 페이지 또는 PHP 처리 파일에서? 또한 개발자 도구에 익숙하지 않기 때문에 Ajax 요청을 어떻게 볼 수 있을까요? 나는 지금 거기에서 aorund를 찌르고있다. 그러나 나는 그것을 발견 할 수 없다. : – maryjane

관련 문제