使用 jQuery 将 JSON 发送到服务器

发布于 2024-11-17 02:01:38 字数 955 浏览 0 评论 0原文

我正在尝试将简单的数据发送到服务器,并且我需要一种“粗略且准备就绪”的方法来执行此操作。

这是我到目前为止所拥有的:

var emails = ['[email protected]', '[email protected]', '[email protected]'];

var ruff_json = "{ 'emails': [";
for (i in emails)
    ruff_json += ((i == 0) ? '' : ', ') + '\''+emails[i]+'\'';

ruff_json += '] }';

jQuery.ajax({
    type: 'POST',
    url: '1.php',
    data: ruff_json,
    dataType: "json",
    timeout: 2000,
    success: function(result){
        //do something
    },
    error: function (xhr, ajaxOptions, thrownError){
        //do something
    }
});

使用Firebug,我可以看到数据已发布到服务器 - 但是,在服务器上,没有数据($_POST 为空) - 我做错了什么?

I am trying to send simple data to theservre, and I need a "rough and ready" way to do this.

This is what I have so far:

var emails = ['[email protected]', '[email protected]', '[email protected]'];

var ruff_json = "{ 'emails': [";
for (i in emails)
    ruff_json += ((i == 0) ? '' : ', ') + '\''+emails[i]+'\'';

ruff_json += '] }';

jQuery.ajax({
    type: 'POST',
    url: '1.php',
    data: ruff_json,
    dataType: "json",
    timeout: 2000,
    success: function(result){
        //do something
    },
    error: function (xhr, ajaxOptions, thrownError){
        //do something
    }
});

Using Firebug, I can see that the data is POSTed to the server - however, at the server, there is no data ($_POST is empty) - what am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦里梦着梦中梦 2024-11-24 02:01:38

我们使用 json 发布所有数据。

var myobj = { this: 'that' };
$.ajax({
  url: "my.php",
  data: JSON.stringify(myobj),
  processData: false,
  dataType: "json",
  success:function(a) { },
  error:function() {}
});

然后在 php 中我们

<?php
  $json = json_decode(file_get_contents("php://input"), true);
  // Access your $json['this']
  // then when you are done
  header("Content-type: application/json");
  print json_encode(array(
    "passed" => "back"
  ));
?>

这样做,这样我们甚至不会弄乱 post 变量,而且一般来说,它比让 jQuery 处理它们更快。

We post all of our data with json.

var myobj = { this: 'that' };
$.ajax({
  url: "my.php",
  data: JSON.stringify(myobj),
  processData: false,
  dataType: "json",
  success:function(a) { },
  error:function() {}
});

then in php we do

<?php
  $json = json_decode(file_get_contents("php://input"), true);
  // Access your $json['this']
  // then when you are done
  header("Content-type: application/json");
  print json_encode(array(
    "passed" => "back"
  ));
?>

This way we don't even mess with the post variables, and in general, its faster than having jQuery process them.

陪我终i 2024-11-24 02:01:38

您的数据字段应该包含一个带有键值对的对象,因为它被编码为 POST 键值对。

data = {my_json: encoded_string};

然后在 PHP 端您可以通过以下方式访问数据:

$data = json_decode($_POST['my_json']);

Your data field should contain an object with key-value pairs, because it gets encoded as POST key-values pairs.

data = {my_json: encoded_string};

Then on the PHP side you can access the data as:

$data = json_decode($_POST['my_json']);
ぶ宁プ宁ぶ 2024-11-24 02:01:38

PHP 通过解析接收到的数据来填充 $_POST。但是,它只识别表单编码的数据,无法自动解析 JSON 数据。所以在这种情况下 $_POST 将毫无用处。您需要获取原始帖子数据并使用json_decode解析它。

PHP populates $_POST by parsing the data received. However, it only knows form-encoded data, JSON data cannot be parsed automatically. So $_POST will be useless in this case. You need to get the raw post data and parse it with json_decode.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文