【问题标题】:Can't post a JSON using $.ajax() or can't read it using php无法使用 $.ajax() 发布 JSON 或无法使用 php 读取它
【发布时间】:2013-06-23 13:05:28
【问题描述】:

我不知道问题出在哪里。 这是我发布 JSON 的 JS 函数:

function send(var1, var2) {
    var result;
    att = window.location;
    $.ajax({
        'crossDomain': true,
        'type': 'POST',
        'async': false,
        'global': false,
        'data': {
            "event_id": var1,
            "status": var2
        },
        'url': att + 'post.php',
        'dataType': 'json',
        success: function (data) {
            result = data['result'];
        }
    });
}

在服务器端,这个(文件:post.php):

<?php
    echo $_POST;
?>

只打印“数组”。 问题是我必须以这种确切的格式发送“数据”(我无法将其字符串化,然后使用 php json_decode() 函数)。我也尝试了 « file_get_contents("php://input") » 方式,但仍然没有。 我不明白问题是我无法正确发布 json 还是我无法在 php 端读取它。 GET方法的实验很好。 抱歉我的英语不好,感谢大家的关注。

【问题讨论】:

  • 今天刚好是这个,好像var1, var2是undefinedundefined
  • 感谢您的回答,但可悲的是,如果我将“数据”更改为:“数据”:{“event_id”:“value1”,“status”:“value2”},没有任何变化:(
  • try var_dump($post); ... echo 不适用于您所想的数组。另外,您能否验证(通过萤火虫)数据是否正确发布?
  • 你能链接到一个活生生的例子吗?您确定参数具有有效值吗?顺便说一句,您可以为 AJAX 调用使用相对 URL。
  • 我不认为是 JSON 问题。我只是不能发布任何东西。这:函数发送(var1,var2){var结果;警报(var1); att = window.location; $.ajax({ url: att + 'post.php', type: 'POST', data: 'something', 成功: function(data){ } }); } 不起作用。函数 $.post() 也不起作用。可能是什么问题?阿帕奇?

标签: php javascript jquery ajax json


【解决方案1】:

要打印array,你可以在php中使用print_r()函数

<?php
print_r(json_encode($_POST)); //use json_encode() since dataType in ajax call is json
?>

要打印单个值,您可以使用echo()

<?php
 echo(json_encode($_POST['event_id']));
?>

【讨论】:

  • 感谢您的回答!这样,它只打印“[]”。我担心 $_POST 还是空的。
  • 是的! Post 值不会发送到服务器端。在ajax调用之前,做一个alert(var1);来检查
  • alert(var1) 和 alert(var2) 工作正常 :( 同样,即使我将“数据”更改为:“数据”:{“event_id”:“value1”,“status”: 'value2'},没有任何变化 :( 我正在 localhost (127.0.0.1) 上尝试所有这些,这意味着什么吗?使用 GET 方法进行实验可以正常工作。
  • 尝试删除单引号。 $.ajax({ crossDomain: true, type:'POST', async: false, global: false, data : {event_id: var1,status:var2}, url: att + 'post.php', dataType: 'json' ,成功:函数(数据){警报(数据);}});
  • 你包括&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"&gt;&lt;/script&gt;
【解决方案2】:

试试下面的js函数:

function send(var1,var2) {
   $(document).ready(function(){
      $.ajax(
      {
              url:"post.php",
        data:{event_id: var1,status: var2},
        success:function (data, textStatus){
          alert(data['status']);
        }, 
        type:"post",
                dataType: 'json'
      }
      );   
    }); 
}

在服务器端“post.php”:

echo json_encode($_POST);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    相关资源
    最近更新 更多