2017-03-02 2 views
0

양식의 모든 데이터를 외부 PHP 파일로 보내고 데이터베이스 값을 업데이트하려고합니다. 아무것도 일어나지 않는 것 같습니다. 콘솔에 오류가 표시되지 않습니다. 나는 응답을 찾고 아무것도 나를 위해 작동하는 것 같습니다. jQuery를 사용하여 POST 메서드를 사용하여 데이터베이스 업데이트

$(document).ready(function(){ 
 
    $('#updatesettings').submit(function(e) { 
 
     e.preventDefault(); 
 
     var lang = $(this).find('.dropdown-toggle').text(); 
 
     console.log('lang=' + lang +'&'+ $(this).serialize()); 
 
     $.ajax({ 
 
      type: "POST", 
 
      url: "modules/game/updatesettings.php", 
 
\t \t \t  data: 'lang='+lang+'&'+$(this).serialize(), 
 
     }).done(function(data){ 
 
      console.log(data); 
 
     }) 
 
     .fail(function(error){ 
 
      console.log(error); 
 
     }); 
 
; 
 
    }); 
 
});
<form id="updatesettings" method="post"> 
 
\t \t   <p> 
 
       <label for="link">LINK</label> 
 
       <input type="text" name="link" class="textbox" id="link" value="<?php echo $tlink;?>" placeholder="LINK"> <?php if($tlink != "") echo'<i class="fa fa-check green"></i>'; else echo'<i class="fa fa-times red"></i>';?> 
 
      </p> 
 
\t \t   <p> 
 
       <label for="email">EMAIL</label> 
 
       <input type="text" name="email" class="textbox" id="email" value="<?php echo $email; ?>" placeholder="E-MAIL"><?php if($email != "") echo' <i class="fa fa-check green"></i>'; else echo' <i class="fa fa-times red"></i>';?> 
 
      </p> 
 
      <div class="btn-group"> 
 
       <a class="btn dropdown-toggle btn-select" data-toggle="dropdown" href="#"><?php echo $langset; ?> <span class="caret"></span></a> 
 
       <ul class="dropdown-menu"> 
 
       <li><a href="#"><span class="flag flag-usa flag-1x"></span> English</a></li> 
 
       <li><a href="#"><span class="flag flag-rou flag-1x"></span> Romana</a></li> 
 
       </ul> 
 
      </div> 
 
\t \t   <p><input type="submit" class="button" href="#" value="Save settings"></p> 
 
\t \t  </form>


내가 업데이트를 사용하려고 외부 PHP 파일

이입니다.

<?php 
 
@include_once('modules/connections/dbconn.php'); 
 
$link = $_POST["link"]; 
 
$link = mysql_real_escape_string($link); 
 
$email = $_POST["email"]; 
 
$email = mysql_real_escape_string($email); 
 
$id = $_SESSION["id"]; 
 
$lang = $_POST["lang"] 
 
if($lang=="English"){ 
 
\t $lang="en"; 
 
} 
 
else { 
 
\t $lang="ro"; 
 
} 
 
mysqli_query($GLOBALS['connect'],"UPDATE users SET `link`='$link' WHERE `id`='$id'"); 
 
mysqli_query($GLOBALS['connect'],"UPDATE users SET `email`='$email' WHERE `id`='$id'"); 
 
mysqli_query($GLOBALS['connect'],"UPDATE users SET `lang`='$lang' WHERE `id`='$id'"); 
 
exit; 
 
?>

는 당신의 도움을 제공하기 위해 노력 주셔서 너무 감사합니다!

+0

요청이 전송 되었습니까? 디버그 콘솔의 네트워크 탭에서 확인하십시오. – bxN5

+0

''lang = '+ lang + $ (this) .serialize()'의 출력을 확인하십시오. 값을 합치려면'&'가 없습니다. –

+0

@ bxN5 예 요청을 보내고 있습니다 – Daniel

답변

0

성공 (완료) 또는 오류 (실패)의 경우 결과를 처리하지 않습니다. 시도 :

$.ajax({ 
      type: "POST", 
      url: "updatesettings.php", 
        data: 'lang='+lang+'&'+$(this).serialize(), 
     }) 
     .done(function(data){ 
      console.log(data); 
     }) 
     .fail(function(error){ 
      console.log(error); 
     }); 

완료() 요청이 올 때를 호출, 일부 오류의 경우에는() 실패합니다.

팁 : f12을 누르고 네트워크 탭으로 이동하여 요청을 확인하십시오.

확인 this pen

+0

충분하지 않습니다.변수 lang에 아무 것도 할당되지 않기 때문에 주요 문제는 데이터에 있습니다. – Daniel

0

코드에서 두 가지 문제가있다. 첫째, 당신이 만들고있는 쿼리는 기형입니다. lang 값과 나머지 직렬화 된 양식 데이터 사이에 &을 추가해야합니다. 둘째, .dropdown-toggle 텍스트를 가져 오는 DOM 통과가 올바르지 않습니다. thisform 요소를 참조하므로 find()을 사용하여 DOM을 작동시켜야합니다 (parents()이 아니라).

적어도 디버깅을 돕기 위해 successerror 처리기를 추가 할 가치가 있습니다. 시도해보십시오.

$('#updatesettings').submit(function(e) { 
    e.preventDefault(); 
    var lang = $(this).find('.btn-group .dropdown-toggle').text(); 

    $.ajax({ 
    type: "POST", 
    url: "updatesettings.php", 
    data: 'lang=' + lang + '&' + $(this).serialize(), 
    success: function() { 
     console.log('it worked!'); 
    }, 
    error: function(x, s, e) { 
     console.log('it failed'); 
     console.log(x, s, e); 
    } 
    }); 
}); 
관련 문제