【问题标题】:Send data with AJAX and receive in PHP使用 AJAX 发送数据并在 PHP 中接收
【发布时间】:2013-08-21 03:10:13
【问题描述】:

我有一个脚本,它基于用户选择的值生成 JSON 数组。这些值作为带有 AJAX 的 JSON 发送到 PHP 脚本,该脚本应该接收这些值并对其进行处理。

可能出了什么问题?

JSON(即发送):

[{
  "Pages":
         {"name":" Page Name 1",
          "id":"252456436636644"}
         },
  {
   "Pages":{
          "name":" Page Name 2",
          "id":"345345435435232"
          }
}]

jquery:

var json_pages = JSON.stringify(publish);

$.ajax({
    url: "post.php",
    type: "post",
    data: { PublishToPages: json_pages },
    success: function(){},
    error: function(){}   
}); 

问题是我从 PHP 收到的 JSON 没有获取数据,

if($_POST['PublishToPages']) {

    $json = $_POST['PublishToPages'];

    $array = json_decode($json, true);

    foreach($array as $item) { 
        $page_id = $item['Pages']['id'];
        echo $page_id;  
    }
}

如果我像这样在 PHP 脚本中手动输入 JSON,它就可以工作,

if ($_POST['PublishToPages']) {

    $json = '[{"Pages":{"name":" Page Name","id":"234545355345435"}},{"Pages":{"name":" Page Name 2","id":"345345435435435435"}}]';

    $array = json_decode($json, true);

    foreach($array as $item) { 
    $page_id = $item['Pages']['id'];
        echo $page_id;  
    }
}

【问题讨论】:

  • 你检查过 $array 里面有什么吗?
  • 添加这个dataType:"json", 到ajax后试试。
  • 如果你在 "var json_pages = JSON.stringify(publish);" 行之后执行 "console.log(publish)"结果是什么? http 请求向您展示了什么?数据是否发送到服务器?
  • 尝试将 var_dump($_POST['PublishToPages']) 添加到您的 PHP 代码中。它输出什么?
  • 感谢@EswaraReddy 我尝试添加 dataType:"json",但它立即在 ajax 中给了我一个“错误”。应该这样放? $.ajax({ url: "post.php", type: "post", dataType:"json",

标签: php jquery json each


【解决方案1】:

试试这个:

if($_POST['PublishToPages']) {

    $json = $_POST['PublishToPages'];
    $items = array();

    $array = json_decode($json, true);

    foreach($array as $item) { 
        $page_id = $item['Pages']['id'];
        $items[] = $page_id;  
    }

    echo json_encode($items);
}

【讨论】:

    【解决方案2】:

    试试这个

    $.ajax({
        url: "post.php",
        type: "post",
        dataType:"json",
        data: { PublishToPages: json_pages },
        success: function(){},
        error: function(){}   
    });  
    

    【讨论】:

      【解决方案3】:

      感谢所有输入!我使用 var_dump 解决了这个问题,并意识到它是编码错误,所以添加了 stripslashes();它奏效了! :)

      if ($_POST['PublishToPages']) {
      
          $json = stripslashes($_POST['PublishToPages']);
      
          $array = json_decode($json, true);
      
          foreach($array as $item) { 
              $page_id = $item['Pages']['id'];
              echo $page_id;  
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-02
        • 2012-09-14
        • 2017-05-31
        • 1970-01-01
        • 2015-03-02
        • 1970-01-01
        • 2015-03-18
        • 2017-05-20
        相关资源
        最近更新 更多