2015-05-27 5 views
1

Я пытаюсь найти способ, которым я могу отправить данные из выпадающего меню в php-скрипт без обновления страницы. На данный момент, когда пользователь нажимает кнопку в раскрывающемся меню, действие формы должно отправить его в php-скрипт, который затем запускает запрос для обновления базы данных. Вот код для одного из раскрывающихся меню, которые я использую. Любая помощь будет потрясающей!Отправить данные из выпадающего меню в mysql без обновления страницы

<form action="P1Append.php?PrimaryID=<?php echo $rows['PrimaryID']; ?>" method="post"> 
    <?php 
    $Check1=$rows['P1']; 
    echo $check1; 
    if($rows['PeriodInValue'] > '1' && $rows['Day'] == '1') { 
    echo '<td bgcolor="#000000">' . $rows['P1'] . '</td>'; 
    } else if ($rows['PeriodOutValue'] < '12' && $rows['Day'] == '2') { 
    echo '<td bgcolor="#000000">' . $rows['P1'] . '</td>'; 
    } else if(empty($Check1)) { 
        echo '<td><b><select onchange="this.form.submit()" style=" width:30px; height:30px;font-size:12pt; background-color:white;" type="text" name="P1" id="P1" maxlength="15" size="1"><option disabled selected></option><option>G</option><option>R</option></td>'; 
         }else if($rows['P1'] == 'G'){ 
         echo '<td bgcolor="#02A10C">' . $rows['P1'] . '</td>';   
         }else if($rows['P1'] == 'R'){ 
         echo '<td bgcolor="#FF0000">' . $rows['P1'] . '</td>'; 
         }else{ 

    } 
    ?></form> 

Так я делал некоторые поиски здесь, и я нашел кого-то еще, кто пришел с решением. Я внедрил это в свой код, но не могу заставить его работать? Любая помощь??

<form onsubmit="return false"> 
     <?php 
     $Check1=$rows['P1']; 
     echo $check1; 
     if($rows['PeriodInValue'] > '1' && $rows['Day'] == '1') { 
     echo '<td bgcolor="#0f5b92">' . $rows['P1'] . '</td>'; 
     } else if ($rows['PeriodOutValue'] < '12' && $rows['Day'] == '2') { 
     echo '<td bgcolor="#0f5b92">' . $rows['P1'] . '</td>'; 
     } else if(empty($Check1)) { 
         echo '<td><b><select style=" width:30px; height:30px;font-size:12pt; background-color:white;" type="text" name="P1" id="P1" maxlength="15" size="1"><option disabled selected></option><option>G</option><option>R</option></td>'; 
          }else if($rows['P1'] == 'G'){ 
          echo '<td bgcolor="#02A10C">' . $rows['P1'] . '</td>';   
          }else if($rows['P1'] == 'R'){ 
          echo '<td bgcolor="#FF0000">' . $rows['P1'] . '</td>'; 
          }else{ 

     } 
     ?></form> 
     <script type="text/javascript"> 
     //on the click of the submit button 
$("#P1").onchange(function(){ 
//get the form values 
var P1 = $('#P1').val(); 

//make the postdata 
var postData = 'P1='+P1+; 

//call your input.php script in the background, when it returns it will call the success function if the request was successful or the error one if there was an issue (like a 404, 500 or any other error status) 
$.ajax({ 
    url : "P2Append.php?PrimaryID=<?php echo $rows['PrimaryID']; ?>", 
    type: "POST", 
    data : postData, 
    success: function(data,status, xhr) 
    { 
     //if success then just output the text to the status div then clear the form inputs to prepare for new data 
     $("#status_text").html(data); 
     $('#name').val(''); 
     $('#brand').val(''); 
    }, 
    error: function (jqXHR, status, errorThrown) 
    { 
     //if fail show error and server status 
     $("#status_text").html('there was an error ' + errorThrown + ' with status ' + textStatus); 
    } 
}); 
</script> 
+1

В принципе, вы хотите посмотреть в [AJAX] (https://developer.mozilla.org/en-US/ документы/АЯКС/Getting_Started). – thewatcheruatu

+0

У меня был взгляд здесь, и я увидел несколько советов, и я уже долгое время царапал себе голову, просто не могу показаться, что я обволакивал его! –

+0

Это, конечно, много, чтобы впитать. Многие люди используют библиотеки для решения таких задач. Одной из самых популярных библиотек является jQuery, которая предоставляет [jQuery.post] (http://api.jquery.com/jquery.post/), чтобы сделать это максимально безболезненным. [Это] (https://jsfiddle.net/nq9hkvef/) - это то, что вы снимаете (очевидно, что это не работает и не завершено, но, надеюсь, вас это запустило). – thewatcheruatu

ответ

1

Вы можете сделать вашу жизнь намного проще, отправив данные в формате JSON.

$("#P1").onchange(function(){ 
//get the form values 
var P1 = $('#P1').val(); 
var PrimaryID = <?php echo $rows['PrimaryID']; ?>; 
//make the postdata 
var postData = { 
    P1: P1, 
    PrimaryID: PrimaryID 
} 

//call your input.php script in the background, when it returns it will call the success function if the request was successful or the error one if there was an issue (like a 404, 500 or any other error status) 
$.ajax({ 
    url : "P2Append.php", 
    type: "POST", 
    data : postData, 
    success: function(data,status, xhr) { 
    //if success then just output the text to the status div then clear the form inputs to prepare for new data 
    $("#status_text").html(data); 
    $('#name').val(''); 
    $('#brand').val(''); 
}, 

В вашем PHP скрипт, вы можете просто захватить значения с помощью $_POST["PrimaryID"] и $_POST["P1"]

+0

Это имеет смысл. Теперь я обновил свой код, чтобы отразить это. Когда я нажимаю «Drop Down», похоже, ничего не делает. Кажется, он даже не пытается запустить скрипт? –

+0

попробуйте открыть консоль разработчика в своем браузере. У вас может быть ошибка где-то. Если вы используете хром, вы можете открыть его с помощью 'ctrl + shift + i', затем нажмите« console ». также проверьте вкладку «сеть» и посмотрите заголовок запроса. вы должны увидеть данные формы, которые там представлены. также проверьте вкладки предварительного просмотра и ответа для запроса, чтобы узнать, что ответил сервер. – Mike

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