2013-11-15 2 views
0

jquery를 사용하여 데이터베이스에 값을 제출하려고합니다. 나는 아약스를 처음 사용하지만 아약스로해야한다. ajax를 사용하여 양식 제출

지금까지 내 PHP 코드는 내가 무슨 짓을했는지입니다

function insertSeries() 
{ 
    $options = array(
     'user' => $_POST['user'], 
     'email' => $_POST['email'], 
     'summary' => $_POST['summary'], 
     'due_date' => $_POST['due_date'], 
     'problem_type' => $_POST['problem_type'], 
     'status' => $_POST['status'] 
    ); 

    $sql = "insert into ticket_summary('user','email','summary','due_date','problem_type','status') Values (?,?,?,?,?,?)"; 
    $result = mysql_query($sql, $options) or die('Could not insert data'); 


} 

내 HTML 코드 내 아약스 JQuery와에게

$('#insert_ticket').submit(function(e){ 
    var postData = $(this).serialize(); 
    alert(postData); 

    $.ajax({ 
     type: 'POST', 
     url: 'http://localhost/api/eric_api.php?q=insertseries', 
     data: postData, 
     success: function(response){ 
      $('#insert_ticket').find('.form_result').html(response); 
     }, 
     error: function(){ 
      alert('error'); 
     } 
    }); 
    e.preventDefault(); 
}); 

내가 돈을 사용하고 여기

<?php 
    include 'eric_api.php'; 
    ?> 

    <!DOCTYPE html> 

    <html> 
<head> 
    <title></title> 
    <script src="js/jquery.js"></script> 
    <script src="js/api_calls.js"></script> 
    <link rel="stylesheet" href="css/normalizer.css" /> 
    <link rel="stylesheet" href="css/style.css" /> 
</head> 

<body> 
    <div class="wrapper"> 
     <h1>Ticketing System</h1> 
     <div> 
      <div id="ticket_form_wrapper"> 
       <form id="insert_ticket" method="post" action=""> 
        <p> 
         <label for="user">User</label> 
         <br /> 
         <input type="user" id="user" class="post_fields" /> 
        </p> 
        <p> 
         <label for="email">Email</label> 
         <br /> 
         <input type="email" id="email" class="post_fields" /> 
        </p> 
        <p> 
         <label for="summary">Summary</label> 
         <br /> 
         <input type="summary" id="summary" class="post_fields" /> 
        </p> 
        <p> 
         <label for="due_date">Due Date</label> 
         <br /> 
         <input type="due_date" id="due_date" class="post_fields" /> 
        </p> 
        <p> 
         <label for="problem_type">Problem Type</label> 
         <br /> 
         <input type="problem_type" id="problem_type" class="post_fields" /> 
        </p> 
        <p> 
         <label for="status">Status</label> 
         <br /> 
         <input type="status" id="status" class="post_fields" /> 
        </p> 
        <p> 
         <input type="submit" id="submit" value="Submit" /> 
         <input type="button" onclick="window.location='index.php'" value="Go to List"/> 
         <div class="form_result"> </div> 
        </p> 
       </form> 
      </div> 

     </div> 
</body> 
    </html> 

이며, 내가 뭘 잘못하고 있는지 알지 못해. 도움을 주시면 감사하겠습니다.

+2

질문이 있습니까? 어디에서 콘솔 오류가 발생 했습니까? – AuthorProxy

+0

뭐하는거야? 그리고 당신은'global $ _POST;'함수를'insertSeries()'함수에 추가 할 필요가 있다고 생각합니다. 또는 함수에 전달하십시오. –

+1

@ user623952'$ _POST'는 모든 곳에서 사용할 수있는 슈퍼 글로벌입니다. – Izkata

답변

1

, 대신에 클릭 이벤트를 방해. 기존 설정을 최소한으로 변경하려면 클릭 제출자를 양식 제출 버튼에 추가하기 만하면됩니다. 핸들러 내부의 제일 먼저 e.preventDefault()를 호출하십시오. 데이터를 직렬화하기 위해 핸들러 내에서 명시 적으로 양식을 선택해야합니다. 그런 다음 기존 Ajax 호출을 해당 처리기로 이동하면 정상적으로 작동합니다. 또한 실제로 PHP 코드의 어딘가에서 insertSeries()를 호출하는지 확인하십시오.

환호

+0

궁금한 점은 제 지식으로는 종종 이런 일을합니다. 당신이 제안한 것을하는 것이 유익합니까? –

+0

양식의 제출 이벤트를 방해하면 야생에있는 일부 브라우저에서 털이 나타날 수 있습니다. XMLHttp 요청과 양식은 매우 접선 적으로 관련이 있기 때문에 하나를 다른 것에 연결하면 실제로 존재하지 않는 관계가 만들어집니다. 클릭 핸들러 내부에 코드를 삽입하면 향후 양식에서 벗어날 수있는 옵션도 제공됩니다. 2 개월이 지나면 정보를 얻는 새로운 방법이 생깁니다. 새 함수를 작성하는 대신 이전 함수를 다른 핸들러로 다시 사용할 수 있습니다. – Zhube

+0

나는 그것을 몰랐다. 나는 자연적으로 "관련있는"것으로 보이는 한, 다른 방식으로보고있다. 나는 다음에 내가 무언가를 쓰고있을 때 그것을 할 것이다. 브라우저를 행복하게 만드는 것이 언제나 선호됩니다. –

0

문제의 원인을 파악할 수 있도록 일부 의견에 회신 해주십시오. 이 함수는 적절한 mysqli 구문으로 표시됩니다.

참고 : mysqli과 같이 삽입 문자열을 사용했지만 매개 변수 바인딩이 pdo과 더 유사합니다. 어느 쪽이 당신이 사용하기를 원했는지 확실하지 않았기 때문에 mysqli을 선택했습니다. 나는 개인적으로 PDO을 선호하지만 ... 원하는 경우이를 사용하여 다시 쓸 수 있습니다. 대신 폼의 제출 이벤트와 방해 Link to the PDO Prepare Function that also shows some binding.

// this is your database connection for mysqli 
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world'); 

function insertSeries($mysqli) 
{ 
    $options = array(
     'user' => $_POST['user'], 
     'email' => $_POST['email'], 
     'summary' => $_POST['summary'], 
     'due_date' => $_POST['due_date'], 
     'problem_type' => $_POST['problem_type'], 
     'status' => $_POST['status'] 
    ); 

    $sql = "insert into ticket_summary('user','email','summary','due_date','problem_type','status') 
            Values (?,  ?,  ?,   ?,   ?,  ?)"; 


    if ($stmt = $mysqli->prepare($sql)) 
    { 
     $stmt->bind_param("ssssss", $options['user'], $options['email'], 
            $options['summary'], $options['due_date'], 
            $options['problem_type'], $options['status']); 

     $success = $stmt->execute(); 

     if ($success) { print "query worked"; } 
       else { print "query failed"; } 
    } 
} 
+0

Ok 답장을 보내 주시면 감사하겠습니다. –

+0

@EricEvans - 몇 가지 의견에 답장 해 주시겠습니까? 코드가 어디에서 실패 했습니까? 나는 함수 b/c를 다시 작성했습니다. 명백한 오류를 볼 수는 있지만 아약스 문제 일 수도 있습니다.오류가 있습니까? 어떤 코드에 도달하고 있습니까? 출력이 전혀 없습니까? –

+0

아약스는 PHP 코드에 도달했기 때문에 작동하지만 내 SQL에 문제가 있으며 내 인덱스가 정의되지 않았다고 말합니다. 당신은 mysqli가 그렇게 연결된 것을 볼 수있는 곳을 알려주시겠습니까? 개체를 만들었지 만 PHP 웹 사이트에서 찾고 있는데 그런 식으로 찾을 수 없습니다. 참조 자료를 제공해주십시오. –

관련 문제