2015-04-02 5 views
0

У меня возникла странная проблема с Ajax. Я пробовал проверять весь код, но все же ajax использует метод GET вместо POST. Пожалуйста, поправьте, если я ошибаюсь, где-либо Вот мой кодAjax не использует метод POST вместо этого использует GET jQuery

$(document).ready(function(){ 
    $("#err<?php echo $id; ?>").css('display', 'none', 'important'); 
    $("#submit-edit<?php echo $id; ?>").click(function(){ 
     $.ajax({ 
      type: "POST", 
      url: "includes/edit_user.php", 
      data: "submit-edit="+$("#submit-edit<?php echo $id; ?>").val()+"&user_id="+$("#user_id").val()+"&username="+$("#username").val()+"&password="+$("#password").val()+"&firstname="+$("#firstname").val()+"&lastname="+$("#lastname").val(), 
      success: function(html){  
       if($.trim(html)=='true') { 
       $("#err<?php echo $id; ?>").addClass("alert alert-success err-inline"); 
       $("#err<?php echo $id; ?>").html("<strong>User Details are Updated Successfully</strong>"); 
       window.location="<?php basename($_SERVER['PHP_SELF']); ?>"; 
       } 
       else { 
        $("#err<?php echo $id; ?>").addClass("alert alert-danger err-inline"); 
        $("#err<?php echo $id; ?>").html("<img src='images/caution-icon.png' /> <strong>Please check the details you have entered</strong>"); 
       } 
      }, 
      beforeSend:function() 
      { 
       $("#err<?php echo $id; ?>").css('display', '-webkit-inline-box', 'important'); 
       $("#err<?php echo $id; ?>").addClass("err-inline"); 
       $("#err<?php echo $id; ?>").html("<img src='images/loading.gif' /> Loading...") 
      } 
     }); 
     return false; 
    }); 
}); 

Вот это PHP код начальной загрузки модальный, я использовал эхо $ ID; Поэтому я могу создать модель для редактирования каждого пользователя, присутствующего на главной странице (страница, с которой я называю этот модальный).

<div id="edit<?php echo $id; ?>" class="modal fade" tabindex="-1" role="dialog"> 
    <div class="modal-dialog modal-md"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button> 
       <h4 class="modal-title">Edit User</h4> 
      </div> 
      <div class="modal-body"> 
      <div class="row"> 
        <div class="col-md-3"></div> 
        <div class="col-md-8"> 
         <div id="err<?php echo $id; ?>" class="alert" role="alert"></div> 
        </div> 
        <div class="col-md-1"></div> 
       </div> 
       <form id="editUser<?php echo $id; ?>" method="POST" class="form-horizontal" > 
        <div class="form-group"> 
         <label class="col-md-3 control-label">Username</label> 
         <div class="col-md-5"> 
          <input id="user_id" type="hidden" name="id" value="<?php echo $row['user_id']; ?>" required> 
          <input id="username" type="text" class="form-control" name="username" value="<?php echo $row['username']; ?>" readonly="readonly"/> 
         </div> 
        </div> 
        <div class="form-group"> 
         <label class="col-md-3 control-label">Password</label> 
         <div class="col-md-5"> 
          <input id="password" type="password" class="form-control" name="password" value="<?php echo $row['password']; ?>" required/> 
         </div> 
        </div> 
        <div class="form-group"> 
         <label class="col-md-3 control-label">First Name</label> 
         <div class="col-md-5"> 
          <input id="firstname" type="text" class="form-control" name="firstname" value="<?php echo $row['firstname']; ?>" required/> 
         </div> 
        </div> 
        <div class="form-group"> 
         <label class="col-md-3 control-label">Last Name</label> 
         <div class="col-md-5"> 
          <input id="lastname" type="text" class="form-control" name="lastname" value="<?php echo $row['lastname']; ?>" required/> 
         </div> 
        </div> 
        <div class="form-group"> 
         <div class="col-md-5 col-md-offset-3"> 
          <button id="submit-edit<?php echo $id; ?>" type="submit" name="submit-edit<?php echo $id; ?>" class="btn btn-success"><i class="icon-save icon-large"></i>&nbsp;Update</button> 
          <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> 
         </div> 
        </div> 
       </form> 
      </div> 
     </div> 
    </div> 
</div> 

Кроме того, файл PHP, к которому данные должны быть размещены в включает/edit_user.php

<?php 
include_once('../../config.php'); 
if (isset($_POST['submit-edit'])){ 

    $user_id=$_POST['user_id']; 
    $username=$_POST['username']; 
    $password=$_POST['password']; 
    $firstname=$_POST['firstname']; 
    $lastname=$_POST['lastname']; 

    $result=mysql_query("update users set password='$password' , firstname = '$firstname' , lastname = '$lastname' where user_id=$user_id")or die(mysql_error()); 
    if($result) 
     echo 'true'; 
    else 
     echo 'false'; 
    } 
?> 
+3

уродливые. вы должны попытаться изо всех сил отделить PHP и JS. – CodeGodie

+0

Это не должно иметь значения, но, предполагая jQuery 1.9.0 или новее, вы можете попробовать 'method:" POST "вместо' type: "POST" '. –

+0

Если он по-прежнему не работает, посмотрите, получает ли сервер * любые * post vars с очень простым вызовом ajax на тестовую страницу. –

ответ

5

Вы должны предотвратить действие по умолчанию из представить до AJAX будет использовать метод POST:

$("#submit-edit<?php echo $id; ?>").click(function(event){ 
    event.preventDefault(); 

Кроме того, you need to prevent SQL Injection. stop using mysql_* functions. Они больше не поддерживаются и являются officially deprecated. Узнайте об prepared statements и используйте PDO.

Кроме того, как указано в комментариях к вашему OP, код ужасно запутан. Попросите PHP сгенерировать ваш HTML и , затем примените jQuery к нему отдельно. Он будет держать вещи чище и легче бегать, когда проблемы спускаются по линии.

+0

Ну, я базовый ученик php, и это всего лишь небольшой проект, который мне нужно закончить как можно скорее. Я внес поправки: $ ("# submit-edit ") .click (функция (событие) { \t \t event.preventDefault(); \t \t \t $.Ajax ({ \t \t \t типа: "POST", \t \t \t URL: "включает/edit_user.php", \t Но эта техника его подводит работал он все еще показывает получить метод хромированной отладчике Пожалуйста, помогите не знаю, как.. добиться этого –

0

Наконец, после отладки в течение нескольких часов я нашел решение Я разместил код Ajax и jQuery после формы. Также исправлены некоторые проблемы в моем Ajax как

data: "submit-edit="+$("#submit-edit<?php echo $id; ?>").val()+"&user_id="+$("#user_id<?php echo $id; ?>").val()+"&username="+$("#username<?php echo $id; ?>").val()+"&password="+$("#password<?php echo $id; ?>").val()+"&firstname="+$("#firstname<?php echo $id; ?>").val()+"&lastname="+$("#lastname<?php echo $id; ?>").val(), 

и в форме я должен был использовать

<input id="username<?php echo $id; ?>" type="text" class="form-control" name="username" value="<?php echo $row['username']; ?>" /> 

Аналогично для других атрибутов. Я, наконец, понял, что для каждого атрибута формы, но должен быть уникальным, чтобы заставить его работать с Ajax. Неважно, если вы измените идентификатор формы. Но для всех форм каждого атрибут должен быть по-разному определен

например:

<form id="form1"> 
     <input id="username1" type="text" value="" /> 
</form> 
<form id="form2"> 
     <input id="username2" type="text" value="" /> 
</form> 

Так что, если я использую несколько форм на странице я должен useevery элемента с другим идентификатором при работе с Ajax. В противном случае это не сработает.

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