PHP通过$ _POST没有收到AJAX POST请求

时间:2014-07-10 20:47:28

标签: javascript php jquery ajax post

我正在构建Firefox OS应用程序的一部分,我不得不使用OpenBadges API,这意味着我不能使用更多的PHP,这会使这更加简单。

我现在遇到的问题是我的数据是从AJAX POST请求发送的:

$(function(){
   $("#submitBtn").click(function(){
      var mail = $('#mail').val();
      $.ajax({
        type: 'POST',
        contentType: 'text',
        dataType: 'JSON',
        url: 'scripts/test.php',
        data: { 
            mail: mail 
        },
        success: function(data){
        var jdata = jQuery.parseJSON(data);
            alert("success! X: " + data);
        }

      });
   });
});

...我的PHP脚本没有收到:

<?php
    if(isset($_POST['mail']))
    {

        $id_url = 'http://backpack.openbadges.org/displayer/convert/email';
        $mail = $_POST['mail'];
        $email = 'email='.$mail;

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $id_url);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $email);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

        $result = curl_exec ($curl);
        curl_close ($curl);

        $user_id = json_decode($result)->userId;
        $test_var = json_decode($result);
        echo $result;
        //echo $test_var;
        //echo $user_id;

    }

//echo $mail;

?>

我一直在Chrome开发工具网络标签中的PHP脚本上获得“已取消”状态,我可以看到它以“example%40gmail.com”而不是“@”的形式发送输入,但是我不确定这是否是问题的一部分。

我一直在寻找和调整我的代码大约两天试图弄清楚问题,但没有一个对其他人有用的修复工作对我有效。

提前致谢。

1 个答案:

答案 0 :(得分:2)

你被取消&#34;取消&#34;因为您点击的链接正在与您的ajax调用同时执行,反过来取消它。您需要做的是使用preventDefault()来阻止点击取消您的请求。

$(function(){
   $("#submitBtn").click(function(e){
      e.preventDefault(); // don't cancel the request
      var mail = $('#mail').val();
      $.ajax({
        type: 'POST',
        contentType: 'text',
        dataType: 'JSON',
        url: 'scripts/test.php',
        data: { 
            mail: mail 
        },
        success: function(data){
        var jdata = jQuery.parseJSON(data);
            alert("success! X: " + data);
        }

      });
   });
});