【问题标题】:Read/Output JSON with PHP from within a class and function使用 PHP 从类和函数中读取/输出 JSON
【发布时间】:2013-02-09 12:12:52
【问题描述】:

我通常使用 Jquery 获取所有 JSON 数据,但我目前只需要使用 PHP。

基本上这就是我通常使用 Jquery 获取和输出它的方式:(片段,而不是整个代码)

$.post('getdata.php', {uid:uid} , function(data){
    if(data){   
    $.each(data, function(key, data) {
    $('#div #span-'+key).html(data);
    });

}

} , 'json')

其中 uid 是传递给 php 用于查询数据库的值。

这是 php 后端:(再次只是 JSON 部分的 sn-p)

while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
    $ret["ID"]       = $row['id'];
    $ret["username"] = $row['username'];
    $ret["email"]    = $row['email'];
    $ret["age"]      = $row['age'];
    echo json_encode($ret);
}

显然,在输出页面上,我连同 jquery 一起启动了类和函数:

$class = new retrieveData();
$class->userDetails();

然后为了输出我想要的数组的各个部分,我将为特定数组部分创建一个具有相同唯一键的跨度,如 jquery 中所述。

我将如何将其中的 jquery 部分转换为 PHP?

【问题讨论】:

  • 什么意思?你想让 PHP 做什么?在字符串中修改 HTML 页面存储的内容?您当前正在创建的页面?等等?
  • 您在 php 中生成的 json 不正确。您正在生成多个独立的 json sn-ps。这是完全错误的。您需要将查询数据提取到数组中,然后对整个数组进行编码。
  • 我想从PHP函数中获取整个数组,然后调用数组的不同部分显示在页面的不同部分。我不希望一次性显示整个数组。例如:在页面左侧显示用户名,然后在侧边栏中显示数组的电子邮件部分......等等。

标签: php jquery mysql class pdo


【解决方案1】:

jQuery 是用 JavaScript 编写的,在用户的浏览器上运行,而 PHP 只在服务器上运行。您无法将在浏览器上运行的东西转换为在服务器上运行的东西。也就是说,不能使用post等AJAX函数

阅读this article

【讨论】:

  • ...是的,你可以。您可以将curl 用于'post',您可以使用PHP 生成发送到浏览器的JS。并且根据功能,很多代码可以移植到其他语言。
  • Ric,该脚本运行良好。它通过一个控制器文件运行,该文件允许在不刷新页面的情况下返回 PHP。不过,我要问的问题是如何将 Jquery 脚本真正重写为 PHP 脚本。
  • @Jon 我假设他正在尝试根据他的 sn-p 转换 AJAX。我知道你可以使用curl 来执行服务器端请求。
  • @Ric 看看接受的答案^^ 他想要的正是curl,只是想从PHP而不是JS中获取json对象。 ^^
  • @Jon Nice,我没想到这是他想要的。我不会质疑它。
【解决方案2】:

所以如果我理解你,你只是想重新设计整个 ajax 端以从服务器发送请求:

$ch = curl_init($theUrlThatReturnsTheData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('uid' => $uid));
curl_setopt($ch, CURLOPT_POST, true);
$jsonData = curl_exec($ch);

$data = json_decode($jsonData);

现在用 json 做任何你需要做的事情...假设你的 jquery 片段就是这样 像这样:

<div id="<?php echo $uid ?>">
   <?php foreach($data as $key => $value): ?>
       <span id="span-<?php echo $key ?>">
         <?php echo $value ?>
       </span>
   <?php endforeach; ?>
</div>

【讨论】:

  • 这正是我想要的。我做了一半,但没有包括“echo $key”部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多