使用AJAX发出POST请求不起作用

时间:2016-03-29 07:23:32

标签: javascript jquery json ajax post

我有一个纯粹的javascript代码,我需要发送一个JSON(可能很大,所以超过GET限制....),所以我想使用AJAX进行POST请求。

我的代码是......

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8" />
      <title>Test POST via AJAX</title>
    </head>
    <body>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
      <script>
        var waypoints = [{
                "options": {
                    "allowUTurn": false
                },
                "latLng": {
                    "lat": 44.911434,
                    "lng": 7.671602
                },
                "name": "Corso Vinovo, Carignano, TO, Piemonte, Italia",
                "_initHooksCalled": true
              }, {
                "options": {
                    "allowUTurn": false
                },
                "latLng": {
                    "lat": 44.910167,
                    "lng": 7.676274
                },
                "name": "Il Tempio del Pane, Corso Cesare Battisti, Carignano, TO, Piemonte, Italia",
                "_initHooksCalled": true
              }, {
                "options": {
                    "allowUTurn": false
                },
                "latLng": {
                    "lat": 44.908034,
                    "lng": 7.675075
                },
                "name": "Banca Intesa, Via Ferdinando Salotto, Carignano, TO, Piemonte, Italia",
                "_initHooksCalled": true
        }];

        alert ('Waypoints --> ' + JSON.stringify(waypoints));

        $.ajax({
          type: "POST",
          url: "NewPage.php",
          contentType: "application/json",
          data: JSON.stringify(waypoints),
          success: function()
           {
            alert("OK ...");
           },
          error: function()
           {
             alert("KO ...")
           }
        })

       alert('After post request ...');

    </script>
   </body>
  </html>

这里你是NewPage.php的代码

<?php
    echo 'Waypoints ?????';
    print_r($_POST)
?>

执行代码我可以看到我的AJAX代码提醒我“OK”,但我看不到任何关于我的NewPage.php

我对这些事情说再见了,对不起平庸......

任何建议,例如,jsfiddle,替代?

提前多多感谢!

切萨雷

6 个答案:

答案 0 :(得分:0)

你应该在php中使用die。

 <?php
       echo json_encode($data_to_pass);
       die;
    ?>

并在您的javascript文件中使用

success: function(data)
           {
            alert(data);
           },

答案 1 :(得分:0)

由于您使用的内容类型为 application / json ,因此您应该从您的php页面返回json_encode结果。也使用exit,否则你会想知道为什么它返回整个页面而不仅仅是json数据。

echo json_encode($some_data);
exit();

答案 2 :(得分:0)

将您的成功回调更改为:

success: function(data)
           {
            alert(data);
           },

一旦AJAX帖子成功完成,您应该会看到警报内的PHP页面中有什么回显。

答案 3 :(得分:0)

        $.ajax({
          type: "POST",
          url: "NewPage.php",
          dataType: "json",
          data: {'waypoints':waypoints},
          success: function(resp)
           {
            //alert("OK ...");
           },
          error: function()
           {
             //alert("KO ...")
           }
        })

NewPage.php

            <?php
                echo 'Waypoints ?????';
                print_r($_POST['waypoints']);
            ?>

答案 4 :(得分:0)

尝试更改数据:航点到数据:{mydata:waypoints}。直接传递数组会导致jQuery以奇怪的格式传递它。http://api.jquery.com/jQuery.param/

答案 5 :(得分:0)

您尚未使用从ajax成功回调中返回的响应

$.ajax({
          type: "POST",
          url: "NewPage.php",
          contentType: "application/json",
          data: JSON.stringify(waypoints),
          success: function(response)
           {
            alert(response);
           },
          error: function(err)
           {
             alert(err)
           }
        })

alert('After post request ...');
在ajax调用完成后,

将不会执行,它将在ajax请求完成后立即调用,独立于完成或挂起。在成功或错误中你的东西也是如此