2016-09-30 32 views
1

私はajaxポストコールでデータを送信しようとしています。しかし、これはどんなデータも送っていません。APIは、ajaxコールから投稿データを取得しません。

私のhtmlフォームは私のスクリプトがある

<form> 
    <div class="row"> 
    <div class="col-sm-6"> 
     <div class="form-group"> 
     <label for="firstname">Firstname</label> 
     <input id="firstname" type="text" class="form-control" id="firstname"> 
     </div> 
    </div> 
    <div class="col-sm-6"> 
     <div class="form-group"> 
     <label for="lastname">Lastname</label> 
     <input id="lastname" type="text" class="form-control" id="lastname"> 
     </div> 
    </div> 
    <div class="col-sm-6"> 
     <div class="form-group"> 
     <label for="email">Email</label> 
     <input id="email" type="text" class="form-control" id="email"> 
     </div> 
    </div> 
    <div class="col-sm-6"> 
     <div class="form-group"> 
     <label for="subject">Subject</label> 
     <input id="subject" type="text" class="form-control" id="subject"> 
     </div> 
    </div> 
    <div class="col-sm-12"> 
     <div class="form-group"> 
     <label for="message">Message</label> 
     <textarea id="message" class="form-control"></textarea> 
     </div> 
    </div> 

    <div class="col-sm-12 text-center"> 
     <a type="submit" class="btn btn-template-main" onclick="sendMail()"><i class="fa fa-envelope-o"></i> Send message</a><span id="sentMessage" style="color:green"></span> 

    </div> 
    </div> 
    <!-- /.row --> 
</form> 

ある

function sendMail(){ 
    var name = document.getElementById ("firstname").value + " " + document.getElementById ("lastname").value; 
    var subject = document.getElementById ("subject").value; 
    var email = document.getElementById ("email").value; 
    var message = document.getElementById ("message").value; 
    var body = "<h3>Message from "+ name +"</h3>"+ 
     "<h4>Email: "+ email +"</h4>"+ 
     "<p><strong>Body : </strong> "+ message +"</p>"; 
    var email= '[email protected]&subject=' + subject + '&body=' + body; 
    console.log("done"); 
    $.ajax({ 
    url: 'http://trimarkworld.com/email.php', 
    method: 'POST', 
    data: { 
     email: email 
    }, 
    success: function(result){ 
     console.log("done"); 
     $("#sentMessage").html("Email has been Sent"); 
    } 
    }); 

} 

私のPHPのコードがある。これは問題ではあると思いanything..I印刷されません

if(isset($_POST['email'])){ 
    echo json_decode($_POST['email']); 
} 

ajax call.please help ..

答えて

3

、それはapplication/x-www-form-urlencode形式で送信されています。したがって、json_decode()に電話する必要はありません。ちょうど使用:

echo $_POST['email']; 
+0

私はjsonとしてどのように送信できますか?ヘッダーで指定する必要がありますか? –

+0

なぜそれをしたいですか? PHPはJSONを必要とせず、 '$ _POST'にデコードしません。 – Barmar

0

連想配列をシリアライズする場合は、PHPでjson_encodeを使用する必要があります。一般的に私はオブジェクトを返すでしょう。この場合、文字列を送るだけであれば、値をエンコードする必要はありません。

if(isset($_POST['email'])){ 
    echo json_encode($_POST['email']); 
} 
0

あなたのPHPはJSONを期待しているので、文字列化されたJSONを渡すことができます。

この例では、まずJSONをデコードし、次にissetを使用します。

あなたのコードをリファクタリングするために、この例を使用する:あなたは$.ajaxでデータを送信するとき、それはJSONとして送信されていないhttps://www.sitepoint.com/jquery-php-ajax-json/

関連する問題