【问题标题】:returning results with Json_encode使用 Json_encode 返回结果
【发布时间】:2012-10-17 07:37:09
【问题描述】:

我正在使用 Jquery 对 PHP 表单的 AJAX 调用:

$.ajax({
    type : 'POST',
    url : 'submit_form.php',
    dataType : 'json',
    data:  dataString ,

它使用以下方法对数据库中的结果进行编码:

echo json_encode($results);

但是,它将数据打印回进行 AJAX 调用的页面顶部,这完全破坏了 IE 中的功能,因为它返回 <html> 声明之前的文本字符串。

{"status":false,"msg":"Sorry The Queue is full"}<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

无论如何我可以在页面上抑制这个回显功能,但仍然将数据数组返回到我的页面,这样我就可以使用像 (data.msg) 这样的结果

【问题讨论】:

    标签: php jquery ajax json


    【解决方案1】:

    尝试在代码前加上:header("Content-type: application/json");echo json_encode($results);

    最好的问候...

    【讨论】:

    • dataType : 'json' 在 AJAX 调用中已经指定了 PHP 文件的内容头,重新声明它会破坏代码。
    • @Edward: dataType 是客户端,header("Content-type: application/json") 用于定义 http 标头以告诉浏览器在文档正文中期望什么类型的数据/文档
    • 当我将该标题添加到 php 文件中时,它会在浏览器窗口中显示我的整个文档,就像我单击页面上的查看源代码一样。
    • @Edward $results 变量是数组吗?
    • @evolquez 是的,它是一个关联数组。
    【解决方案2】:

    对您的响应数据使用回调函数。回调将是一些处理接收到的数据的函数。它必须在全局范围内(AFAIK)。当服务器的响应准备好时,将调用该函数并处理数据。

    // from the server:
    someFunction({"status":false,"msg":"Sorry The Queue is full"});
    
    // in your page, in a script tag, etc.
    window["someFunction"] = function(result){
        // do something
    }
    

    【讨论】:

    • 我不确定你在说什么,我使用的是$(document).ready(function () {,我的ajax成功函数已经将结果作为参数
    • 您遇到的问题是因为您试图将结果回显到已经包含数据的页面上。典型的 AJAX 工作流程通常是这样的:网页上的一些 javascript,如 index.html,向单独的服务器页面发出请求,如 doWork.php?args=FruitSalad -> 服务器在同一个 doWork.php 上回显结果 ->原始页面(index.html)上的回调函数监听回调函数,并根据接收到的数据更新页面。
    【解决方案3】:
    $.ajax({
      type : 'POST',
        url : 'submit_form.php',
        dataType : 'json',
      success: function(data) {
       console.log(data);
    });
    

    试试这个。调用成功后你会得到js对象的结果。在控制台中检查结果。

    【讨论】:

    • 如果我不回显 json_encode($result),日志将返回为 null
    • 回显结果然后可见
    猜你喜欢
    • 2015-09-29
    • 2015-06-12
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 2010-12-30
    相关资源
    最近更新 更多