2013-02-25 3 views
0

다음 코드에서, 내 AJAX 호출 전에 alert을 호출하면 예상대로 실행되고 정확한 정보가 반향됩니다. 그러나, 내가 PHP를 통해 정보를 전달하려고하면 데이터가 비어있는 것 같습니다. 내가 뭘 PHP에서 잘못하고 있니?Ajax 양식 제출 양식 문제. 올바른 값을 얻을 수 없습니다.

자바 스크립트 :

$('#submit_fourth').click(function(){ 
    //send information to server 
    var email = $('input#email').val(); 
    var hash = $('input#username').val(); 
    var type = $('input#type').val(); 
    var finish = "email=" + email + "hash=" + hash + "type=" + type; 

    alert(finish); 
    $.ajax({ 
     cache: false, 
     type: 'POST', 
     url: 'process.php', 
     data: finish, 
     success: function(response) { 
      alert('it worked!'); 
     } 
    }); 
}); 

PHP는 :

<?php 
    $to  = '[email protected]'; 
    $subject = 'Hash testing requested'; 
    $message = $_POST['finish']; 
    $headers = 'From: [email protected]' . "\r\n" . 
     'Reply-To: [email protected]' . "\r\n" . 
     'X-Mailer: PHP/' . phpversion(); 

    mail($to, $subject, $message, $headers); 
?> 
+0

그냥 대신 쿼리 문자열로 finish를 전달할 수 있습니까? – christopher

+0

var_dump ($ message);를 설정하고 결과를 붙여 넣습니다. – mkaatman

답변

3

이것은 잘못된 것입니다 :

:

var finish = "email=" + email + "hash=" + hash + "type=" + type; 

은 최소한이어야한다

var finish = "email=" + email + "&hash=" + hash + "&type=" + type; 

그러나 (당신이 ... 일을하지 않음) 데이터의 탈출 문제를 방지하기 위해서는 사용하는 것이 아마도 더 :

var finish = $("form").serialize(); 
1

당신은 일반 객체에 데이터를 전달해야합니다

var email = $('input#email').val(); 
var hash = $('input#username').val(); 
var type = $('input#type').val(); 

$.ajax({ 
    cache: false, 
    type: 'POST', 
    url: 'process.php', 
    data: {email: email, hash: hash, type: type}, 
    success: function(response) { alert('it worked!'); } 
}); 
+0

그것은 객체가 아니라 배열입니다 – peterm

+0

죄송합니다, 고정 :) – Syneo