2016-07-07 5 views
0

비슷한 경우에 대해 여러 스레드를 읽었지만 지금도 올바르게 수행 할 수 없습니다.ajax form submit -> php에서 respone 받기

내가 원하는 작업 기본적으로 사용자가 로그인 (간단히 데이터베이스에 쿼리)을 변경할 수있는 양식이 있습니다. PHP 스크립트는 다음과 같습니다

if(isset($_POST['login'])) { 
     $doEdit = $user->editData("login", $_POST['login']); 
     if($doEdit) { 
      $result = displayInfobox('success', 'Good!'); 
     } else { 
      $result = displayInfobox('warning', 'Bad!'); 
     } 
    } else { 
     $error = 'Bad!'; 
     echo $error; 
    } 

displayInfobox 클래스 즉 성공과 내용으로 단지 사업부입니다 - 좋은!

지금이 양식을 AJAX로 보내고 페이지를 다시로드하지 않고 $ result를 표시하고 싶습니다.

HTML :

<form id="changeLogin" method="post" class="form-inline" action="usercp.php?action=editLogin"> 
     <label for="login">Login:</label><br /> 
     <div class="form-group "> 
      <input type="text" class="form-control" name="login" id="login" required> 
      <input type="submit" value="Zmień" class="btn btn-primary"> 
     </div> 
    </form> 

그리고 finnally - 내 JQuery와/아약스 :

$("#changeLogin").submit(function(e) { 

    var postData = $(this).serializeArray(); 
    var formURL = $(this).attr("action"); 
    $.ajax({ 
    url: formURL, 
    type: "POST", 
    data: postData, 
    success: function(result) { 
     alert(result); 
    }, 
    error: function(response) {} 
    }); 
    e.preventDefault(); 
}); 

$("#changeLogin").submit(); 

내가두면 "성공"빈, 작동 -> 양식 아약스에 의해 제출, 로그인이 변경되었지만 결과 메시지가 표시되지 않습니다. 그렇지 않으면 전체 페이지가 다시로드됩니다. 또한 F5를 누르면 양식이 다시 제출됩니다 (Ajax에서도).

+0

은 두 번째'$ ("# changeLogin")입니다. 코드에서 submit(); – Jeff

+0

또한 html-form에서'action'을 정의한 다음 거기에서 그것을 가져올 필요가 없습니다. 그것을 비워두고 js에 url을 설정하십시오. – Jeff

답변

1

내가 충분히 명성을 가지고 있지만하지 않기 때문에 내가 설명을 추가하지 못할 ...

당신은 결과를 할 수 있도록 에코해야 당신의 PHP 스크립트 파일에서 다음 $("#changeLogin").submit();

와 함께 마지막 줄을 삭제해야 ajax 요청에서이 결과를 얻으십시오. 그런 다음 성공 방법에서 결과를 읽고 어딘가에 성공 또는 오류 상자를 표시해야합니다 (예 :) 성공 또는 오류 상자를 표시하려면 어딘가에 추가해야합니다.

+0

고마워요! 그 결과를 + 걸러 냈습니까? 그리고 그것은 효과가있는 것 같습니다. 그냥 필터() 제대로 사용하는 방법을 알아낼 수 없다 -> 그 결과는 일부 클래스와 div에, 내가 그것을 필터링 할 때 div의 내용을 가지고, 그 클래스들로 전체 div 대신. – ficus

0

버튼을 제출하는 대신 일반 버튼을 사용할 수 있다고 생각합니다. onclick은 아약스가 될 수 있습니다. 요청 양식을 제출해서는 안됩니다, 행운을 빌어 요.