0

次のコードではalert、ajax 呼び出しの前に期待どおりに実行され、正しい情報が返されます。しかし、php 経由で情報を渡そうとすると、データが空のようです。私のphpで何が間違っていますか?

Javascript :

$('#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      = 'blanet910@yahoo.com';
     $subject = 'Hash testing requested';
     $message = $_POST['finish'];
     $headers = 'From: webmaster@hashtester.com' . "\r\n" .
         'Reply-To: webmaster@hashtester.com' . "\r\n" .
         'X-Mailer: PHP/' . phpversion();

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

2 に答える 2

3

これは間違っています:

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

少なくとも次のようにする必要があります。

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

しかし、データのエスケープに関する問題 (あなたが行っていない...) を回避するには、おそらく以下を使用することをお勧めします:

var finish = $("form").serialize();
于 2013-02-25T22:01:38.373 に答える
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!'); }
}); 
于 2013-02-25T22:04:09.780 に答える