【问题标题】:Pass JSON AJAX reply to PHP将 JSON AJAX 回复传递给 PHP
【发布时间】:2013-04-15 01:55:59
【问题描述】:

我有一个脚本,它使用 AJAX 连接到一个查询数据库并返回一些值的 PHP 脚本。代码如下:

<script>
function showUser(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","ajaxphp.php?ID="+str,true);
xmlhttp.send();
}
</script>

<select id="users" name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<!-- PHP populates this dropdown box -->
</select>
<div id="txtHint"><b>Selected user info will be listed here.</b></div>

现在 txtHint div 将返回 ajaxphp.php 脚本打印的任何内容。然而,这不是很灵活。我想要做的是在 ajaxphp.php 中创建一个数组并使用 json_encode() 将结果传回。

我遇到的问题是我不知道如何获取原始脚本来获取结果,以便我可以用它们做有用的事情。现在我可以让它返回一个 JSON 数组,该数组将出现在 txtHint div 中,但我不知道如何让 PHP 实际读取该信息,以便我可以用它做点什么。

【问题讨论】:

  • 如果您可以让您的 PHP 返回一个 JSON 数组,那么需要更改的是您的 javascript 函数,而不是 php。而不是document.getElementById("txtHint").innerHTML=xmlhttp.responseText;,您将拥有自己的代码来解析数组并用它做一些有用的事情。
  • 关于另一个话题,我建议你看看现有的库,例如jQuery,它会为您处理很多事情,包括处理浏览器差异并将响应解析回 javascript 数组。

标签: php ajax json


【解决方案1】:

使用$_GET 方法查看用户在 php 中发送给您的内容,请参见此处:

http://php.net/manual/en/reserved.variables.request.php

【讨论】:

    【解决方案2】:

    也许 json_decode() php 方法是您想要的解决方案。

    http://www.php.net/manual/en/function.json-decode.php

    此方法采用 JSON 编码字符串(例如来自 json_encode 方法)并将其转换为 PHP 变量...因此您可以像使用对象一样使用此变量并简单地访问其属性。

    也许其他帖子会对您有所帮助:How to decode a JSON String with several objects in PHP?

    希望这会有所帮助!再见 !

    【讨论】:

    • 我了解json_decode()存在,问题是我不知道如何将AJAX脚本的结果传递给json_decode()
    【解决方案3】:

    尝试使用 jQuery Ajax...

        $.ajax({
            url : 'ajaxphp.php?ID='+str,                          
            type: 'get',                   
            dataType:'json',                   
        success : function(data) {  
            console.log(data);
        }
       });
    

    成功函数参数中的数据是你从php返回的编码结果。

    echo json_encode($result); 
    

    然后你可以从 javascript 中使用类似这样的东西访问它。

    data.result1
    data.result2
    data.result3....
    

    【讨论】:

    • 感谢您的回复,我已经完成了所有工作,直到最后一点。我对 Javascript 不是很熟悉,所以我不确定如何按照你说的那样访问这些数据。我想用它来填充各种表单字段,将来可能需要一些处理。有什么方法可以将 json 编码的结果返回给 PHP?
    • 试试看这个stackoverflow.com/questions/4424518/… 在javascript中处理json对象真的很容易。只需在浏览器中打开控制台,然后查看 console.log(data) 的结果;命令
    猜你喜欢
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    相关资源
    最近更新 更多