Форма не отправляет данные

Не отправляются данные на другую страницу

index.php

    <form method="POST" id="formx"   action="javascript:void(null);"  onsubmit="call()">
<div class="search-container">

                    <div class="row with-forms">

                        <div class="col-md-2">
                            <select data-placeholder="All States" class="chosen-select" name="city">
                            <option value="null">Выберите город</option>
                            
                            <? 

                            $result=mysqli_query($con,"SELECT* from geo_city");


                            while ($row=mysqli_fetch_array($result)){
                                $name=$row['name'];
                                $id=$row['id'];
                                echo "<option value='$id'>$name</option> ";
                            } 
                            
                            ?>       
                            
                        </select>
                        </div>              
    
                        <div class="col-md-2">
                            <div class="main-search-input" >                
                                <button style="margin-left: 0px;" class="button" ><i class="fa fa-search"></i></button>
                            </div>
                        </div>

                    </div>
                </div>
            </div>
        </div>
    </div>

</div>
</form>

 <script type="text/javascript" language="javascript">
                function call() {
                  var msg= $('#formx').serialize();
                     $.ajax({
                       type: 'POST',
                       url: 'city.php',
                       data: msg,
                       success: function(data) {
                         $('#results').html(data);
                     document.location.replace('http://HTML/city.php');
                       },
                       error:  function(xhr, str){
                       alert('Возникла ошибка: ' + xhr.responseCode);
             
                       }
                     });
           
                 }  
 </script>

city.php

<?  
$city=$_POST['city']; 
var_dump($city);
?>

Ответы (1 шт):

Автор решения: cy4oHok

Замените

var msg= $('#formx').serialize();
        

На

var msg = new FormData();
msg.append('city', $('select[name=city] option:selected').val() );

Я так делаю в моменты когда мне не нужно делать submit формы, но ее данные все же отправить нужно.

$.ajax({
    url: 'city.php',
    type: 'POST',
    data: msg,
    cache: false,
    contentType: false,
    processData: false,
    error: function(req, text, error) {
        alert('Возникла ошибка: ' + error);    
    },
    success: function ( data ) {
        $('#results').html(data);
    },                                             
});                                 
→ Ссылка