如何获取 AJAX 发送的 JSON 以与 PHP 配合使用

2024-01-17

在我寻求让 PHP 可以使用这个 JSON 的过程中,我遇到了一个又一个的障碍,所以我想知道是否有人可以帮助我。

我将 JSON 存储在变量 DivisionsJSON 中:

    var divisionsJSON = JSON.stringify(divisions);  


然后我尝试使用 .ajax 发布以下内容:

$.ajax({
     url: "divisions.php",
     type: "post",
     data: divisionsJSON,
     success: function(){
     alert("success");
       $("#result").html('submitted successfully');
     },
     error:function(){
      alert("failure");
      $("#result").html('there is error while submit');
     }   
     }); 

(我从另一个问题上复制了这个,但是我的html中没有任何带有id =“result”的内容 - 我想我可以删除该部分[删除已确认])

然后,我的 Divisions.php 页面包含以下内容:

<?php 
    $url = "divisions.php";
    $json = file_get_contents($url);
    $json = utf8_encode($json);
    $elements = json_decode($json);
    var_dump($elements);
  ?>

我对 PHP/ajax 缺乏经验,加上我对它的工作感到沮丧,这让我尝试了很多不同的事情。到目前为止,当我加载 Divisions.php 时,我要么得到 NULL,要么什么也没有。我的直觉告诉我,这是 ajax 的问题,但我对 PHP 缺乏经验,所以我不能自信地说我的 PHP 足够正确,足以让我应该得到一些东西。我尝试过 var_dump、print_r、echo,在 divions.php 上绝对没有显示与实际 PHP/JSON 相关的内容。任何和所有的帮助将不胜感激!

使用更新的代码响应:

当我在 utf8 行中添加以下没有 utf8 行的 php 时,我得到 NULL 和 string(0) "" :

<?php
        $json = json_decode(file_get_contents('php://input'));
        $elements = utf8_encode($json);
        var_dump($elements);
?>

有任何想法吗?

编辑完整的 php 页面:

<!DOCTYPE html>

<html lang="en">

<head>  
    <meta charset="utf-8">
    <title>untitled</title>
    <link rel="stylesheet" href="styles/reset.css" />
</head>

<body>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="underscore.js"></script>
<script type="text/javascript" src="application.js"></script>
<script type="text/javascript" src="divisions.js"></script>
<?php
        print_r($_POST);
?>
</body>
</html>

我已经尝试了 php、print_r($_POST);、json_decode($_POST); 等多行,但我根据我在其他 SO 和此页面上看到的内容更改了很多内容,我'我真是发呆了。

编辑:我打算创建一个数组的这段代码不会生成 JSON 吗?因为我似乎没有使用 JSON atm。

var divisions = [];
for (var i = 0; i < arr.length; i++) {
    if(arr[i].value != "N/A"){
    var obj = { "login": arr[i].login,
            "value": "http://www.value.net/index/" + arr[i].value};
    divisions.push(obj);}

首先,在处理 JSON 时,最好的方法是尽可能不去管它。想想是否属于易碎品。你对它做的任何事情都可能会破坏它。

考虑到这一点,不要使用 stringify(),事实上你不需要这样做,因为 JQuery 会检测它并为你处理它(因为他们知道它很脆弱)。

其次,$ajax()方法中的选项data:需要给出一个对象。一般来说你会做这样的事情,

data: {mydata:divisionsJSON}

这样你就可以通过以下方式访问后端的 JSON

$json = json_decode($_POST['mydata']); 

或者,根据您设置的divisions数组的方式,您可以将其作为对象数据发布:正在通过$_POST['divisions_key'] =divisions_value在PHP中查找并访问它;但这会导致以后出现各种问题,并将前端硬链接到后端,这是非常糟糕的(大多数时候,例外如下)。

另外,如果您期望 JSON 响应,则需要在原始调用中使用 dataType: 'JSON' 选项进行指定,以便 JQuery 可以正确处理它。

$.ajax({
 url: "divisions.php",
 type: "post",
 data: {mydata:divisions},
 success: function(response){
   $("#result").html(response.message);
 },
 error:function(response){
  $("#result").html(response.message);
 }   
 });

但是,在我们深入之前,JS 中的除法变量是令人不安的。它的来源是哪里?它是一种形式吗?如果是这样,您可以使用serialize(),这样

var divisions = $('#myform').serialize();

这将创建 key=>value 对,其中键是表单字段的名称,值(显然)是字段的值。您可以像平常一样访问 PHP 中的值。

在考虑之前有关数组如何构造的问题时,将数据作为对象发布是可接受的情况。如果它是一个表单,那么表单结构无论如何都会链接到后端,因此直接使用 data: 选项中的对象就可以了。这就是“别管它”的第一个概念。这里的最后一种情况完全不影响该对象;从它离开 DOM 到被处理程序接收到,它 100% 都是一个对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取 AJAX 发送的 JSON 以与 PHP 配合使用 的相关文章

  • 类 Doctrine\Common\Collections\ArrayCollection 不是有效的实体或映射的超类

    我有三个实体 特征值 php
  • Razor mvc3 + jquery + Url 操作 + 部分视图

    我有一个关于 jQuery Razor 的问题 我想使用 razor 和 Url Action 构建一个 javascript 变量 并且 html 属性将是输入的值 像这样 var d1 d1 val var d2 d2 val var
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • 参考上一个问题:为什么 VBA 没有加载所有发票详细信息

    除了上一个问题之外 我们在销售发票上仍然存在相同的加载失败问题 下面的 VBA Json 仍然仅加载一行或第一个产品详细信息行 而不是与表中该销售发票合作的所有产品行详细信息 我们希望下面的 VBA 能够根据参数加载发票详细信息 例如 如果
  • POSTed 数组保留其值

    今天 我注意到我的一个 WordPress 安装的行为方式非常奇怪 每当我从仪表板更新帖子时 它的一些额外输入都会保留它们已有的值 所有这些都是多维数组 例如 post php post 123 action 编辑
  • 如何处理致命错误:cURL错误7:无法连接到xxxx端口443

    我有一个连接到第三方 API 的脚本 它是并且应该在 24 7 不间断循环上运行 我在重新启动循环之前在最后使用睡眠 问题是 有时第三方 API 会被拒绝 或者连接会因以下错误而中断 致命错误 未捕获的异常 GuzzleHttp Ring
  • Apache Camel 的 JsonMappingException

    我在骆驼路线上遇到以下异常 Caused by com fasterxml jackson databind JsonMappingException No serializer found for class org apache cam
  • AngularJS + jQuery 移动

    是否还有其他可能性来设计AngularJS以移动友好的方式应用程序CSS 我正在计划一个移动应用程序 并希望使用 AngularJS 进行逻辑和数据绑定 但我不想自己设计所有内容CSS The AngularJSFAQ说它使用jQuery
  • 返回视图作为 JSON 对象的一部分

    我有一个应用程序只加载一次完整视图 我这样做的原因并不重要 重要的是 其余内容只会以部分视图的形式返回 除了一些内容之外 我还有一些 JSON 对象 我想通过每个 AJAX 请求在服务器之间来回传递 有没有办法返回一个 JSON 对象 并将
  • Yii2 组件将数据传递给 __construct

    我有一个库 我想将其用作组件 在配置文件中我这样设置 components gt superLib gt class gt SuperLib construct gt first second Maybe Yii 2 have proper
  • 检查字符串是否编码为 UTF-8

    function seems utf8 str length strlen str for i 0 i lt length i c ord str i if c lt 0x80 n 0 0bbbbbbb elseif c 0xE0 0xC0
  • MySQL如何从多个表中获取数据

    我正在寻找 php MySQL jquery 的帮助 我有2张桌子 table1表 1 有 4 列 id 标题 desc thumb img tabel2表 2 有 3 列 id 表 id img 我只想将 2 个表与 get QS 的值进
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • 通过 IP 地址限制 Laravel 错误日志

    When debug被设定为true在 Laravel 的app config php有什么方法可以限制结果Whoops包含对某些 IP 地址的堆栈跟踪的错误页面 并且不在该列表中的 IP 显示特定视图 Thanks 没有内置 但是你可能可
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • 从更多元素中仅获取唯一名称

    我动态渲染了 HTML 其中列出了未确定数量的单选按钮 这些按钮的名称代表数据库中的某些 id 我需要收集收音机的所有唯一名称 这是一个例子
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h
  • 如何获取所有mysql元组结果并转换为json

    我能够从表中获取单个数据 但是当我试图获取表上的所有数据时 我只得到一行 cnn execute sql rows cnn fetchall column t 0 for t in cnn description for row in ro

随机推荐

  • Carrierwave - 如果文件类型不在白名单上,则触发存在验证

    在我的 Rails 4 应用程序中 我使用 Carrierwave 上传图像 class UserItemImage lt ActiveRecord Base include PicturesHelper attr accessor foo
  • 占位符张量需要机器学习引擎预测中的值,但不需要本地预测

    我一直在开发一个与云 ML 引擎的在线预测服务一起使用的模型 我的模型包含一个placeholder with default我用它来保存预测显着性阈值的张量 threshold tf placeholder with default 0
  • Backbone.js:更改未在 model.change() 上触发

    我在 Backbone js 上面临 更改事件未触发 问题 这是我对用户模型的看法 window UserView Backbone View extend initialize function this model on destroy
  • 使用 dask 加载大型数据集

    我处于具有集群 紧密耦合互连和支持 Lustre 文件系统的 HPC 环境中 我们一直在探索如何利用 Dask 不仅提供计算 而且充当分布式缓存来加速我们的工作流程 我们专有的数据格式是 n 维且规则的 并且我们编写了一个惰性读取器以传递到
  • 如何从 DRF 的标题选项中删除“LOCATION”?

    我有一个序列化器 其中包含URL字段 默认情况下 如果有一个字段名为URL然后该字段的值作为 LOCATION 添加到 HEADER 选项中 我不想这样做 并且想删除LOCATION标题中的选项 这是我的序列化器 class DemoSer
  • Rails 根据两个字段查找或创建

    我有一个场地模型 我想这样做 Venue find or create by 但我只想在同名和日期不存在的情况下创建一个新场地 例如 gt Venue id integer location string showdate datetime
  • fill_ Between() 不起作用

    I have this tiny problem with a chart I am working on I d like to fill the area between 2 semi vertical lines as shown b
  • 从 OpenCV + Python 获取 HOG 图像特征?

    我读过这篇关于如何使用 OpenCV 基于 HOG 的行人检测器的文章 如何使用 OpenCV 检测和跟踪人员 https stackoverflow com questions 2188646 how can i detect and t
  • 如何删除前导“0”。在数值 R 变量中

    如何简洁地更改数字 R 变量 保持其数字 以便例如 0 34 变成简单的 34 仅当输出数值时 才必须选择具体的表示形式 即数字的格式 您不能将数值变量从 0 34 更改为 34 两者都是同一数字的表示 但是 当您输出表达式时e 您可以选择
  • 'git reset --soft' 是一个无操作命令吗?

    The 文档 http linux die net man 1 git reset指出利用 soft option 根本不触及索引文件或工作树 但要求它们处于良好的顺序 这使得所有更改的文件 要提交的更改 正如 git status 所说的
  • NoSuchFieldError 实例位于 org.apache.http.impl.io.DefaultHttpRequestWriterFactory

    java version 1 7 0 71 Gradle 2 1 Hello UPDATE 依赖关系 gradle dependencies grep httpcore org apache httpcomponents httpcore
  • 如果应用程序未至少启动一次,广播接收器将无法在 ICS 中工作

    这个问题在堆栈溢出中被问过几次 但还没有解决方案 我有一个广播接收器 用于接收 USB 连接操作 广播接收器的责任是 如果我得到意图启动我的应用程序 在清单文件中 我添加了接收器 我在 GingerBread 中也有同样的逻辑 但 ICS
  • 暂停 UIImageview 动画

    我想暂停UIImageView animation根据我的研究发现 您可以停止图像的动画 但无法暂停序列 通过调用语句stop animating on the UIImageView然后它停止动画并清空图像视图 要暂停 UIImages
  • 片段实例化崩溃

    我的一些用户遇到了崩溃 这是 Google Play 开发者控制台上的崩溃报告中显示的错误 Unable to start activity ComponentInfo com havens1515 autorespond com have
  • 表面网格到体积网格

    我有一个使用 Meshlab 从点云生成的封闭表面网格 我需要为此获得一个体积网格 这样它就不是一个空心物体 我想不通 我需要获取 stl 文件进行打印 谁能帮我获得体积网格 我更喜欢简单的解决方案而不是复杂的算法 给定一个定向的水密表面网
  • GKE Ingress-GCE 是否支持压缩?

    我的后端在 Rocket Rust 中没有内置压缩功能 因此 它依赖于代理来压缩它 虽然 nginx 入口控制器支持它 但我想默认的入口控制器是否也有它 因为它具有高可用性 如果没有的话应该如何设置呢 更新 2018 01 31 它看起来像
  • 如何从 R 中拟合线性 b 样条回归中提取基础系数?

    以下面的一结 一级样条为例 library splines library ISLR age grid seq range Wage age 1 range Wage age 2 fit spline lm wage bs age knot
  • Youtube API v3,topicId 恢复

    Youtube API v3 使开发人员能够检索有关特定视频的特定信息 在返回的数据中 有一个称为topicDetails可以按照以下示例请求 Request https www googleapis com youtube v3 vide
  • Angular 无法使用不同数量的子级重新附加 ActivatedRouteSnapshot

    这是我在 NativeScript Angular 项目中的路由 const routes Routes path redirectTo tabs default pathMatch full path tabs loadChildren
  • 如何获取 AJAX 发送的 JSON 以与 PHP 配合使用

    在我寻求让 PHP 可以使用这个 JSON 的过程中 我遇到了一个又一个的障碍 所以我想知道是否有人可以帮助我 我将 JSON 存储在变量 DivisionsJSON 中 var divisionsJSON JSON stringify d