2014-12-03 8 views
-1

Так что я думаю, что есть проблема с сериализационной частью jquery ajax. Он не помещает какую-либо информацию в базу данных, и я понятия не имею, почему! Очевидно, что переменные из элементов управления ввода на веб-странице не передаются на страницу обработки php. Что я здесь делаю неправильно? Нужна помощь здесь с этими людьми! Это все очень ново для меня.данные не вставляются в базу данных

WEB-страница:

<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/) и ради вас. Надеюсь, это не в общедоступном Интернете. Вам необходимо убедиться, что все пользовательские параметры [правильно экранированы] (http://bobby-tables.com/php), или вы подвергаетесь серьезному риску компрометации приложения. По возможности используйте подготовленные заявления и заполнители, чтобы убедиться, что вы не подвергаетесь ошибкам такого рода. ['ezSQL_mysql'] (http://docs.phpvms.net/internals/d5/d95/classez_s_q_l__mysql.html) имеет функцию' escape', которую вы ** срочно ** должны использовать. – tadman

+0

@ JonathanKuhn ooo спасибо пропустил это! Я добавил его в тег формы, но все еще не вставляя в db:/ – maryjane

+0

@tadman нет его внутреннего. Мне нужно, чтобы это было функционально, а затем исправить проблемы безопасности позже. Босс просто хочет получить его там, чтобы они могли «играть» с ним – maryjane

ответ

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

Форма элемент названmain_form. Ваш селектор jquery ищет id. Вы можете просто изменить name="main_form" на id="main_form" на свой тег формы, и он должен исправить его.

+0

ooo спасибо пропустил это! Я добавил его в тег формы, но все еще не вставлял в db:/Как распечатать строку sql, чтобы проверить, передаются ли переменные? Я попробовал 'echo json_encode ($ sqlCheck);' но не работал. – maryjane

+0

Попробуйте открыть инструменты разработчика в своем браузере (F12) и посмотрите на запрос ajax. Вы можете видеть, какие переменные отправляются при проверке почтового запроса. Вы также можете просто напечатать_r ($ _ POST) на странице обработки и посмотреть, что было отправлено. Глядя на запрос ajax, орган ответа получит этот вывод. –

+0

Где я могу поместить print_r? На веб-странице или в файле обработки php? Кроме того, я не очень хорошо знаком с инструментами разработчика, так как бы я посмотрел на запрос ajax. Я сейчас воткнула туда, но я не могу найти его. :( – maryjane

Смежные вопросы