【问题标题】:How to send a json string back to jquery如何将json字符串发送回jquery
【发布时间】:2012-05-04 18:49:33
【问题描述】:

我需要将一些数据发送到外部 php 页面,并且该页面必须将所需的数据发送回 jQuery。我的问题是如何将数据从外部页面发送回发送它的页面上的 jQuery。

这是将数据发送到外部页面的 jQuery 代码:

function LoadImageData(url)
{    
    $.ajax({
      url: 'get_image_data.php',
      dataType: 'json',
      data: {'url': url },
      success: SetTag()
    }); 
}

这是htat接收数据的PHP代码,需要返回一些数据:

<?php
require_once('FaceRestClient.php');

$apiKey = '**********************';
$apiSecret = '**********************';
$api = new FaceRestClient($apiKey, $apiSecret);

$active_url = $_POST['url'];
$photos = $api->faces_detect($active_url);

return $photos;
?>

所以我的问题是,如何将数据发送回 jQuery。只是简单的返回似乎不起作用。

提前致谢, 标记

【问题讨论】:

    标签: php jquery json


    【解决方案1】:

    您需要回显生成的 JSON:

    echo $photos;
    

    如果$photos 还不是JSON,请使用json_encode

    echo json_encode( $photos);
    

    【讨论】:

    • 但是我如何在 jQuery 中使用它呢?当我尝试在成功方法中插入一个变量作为参数时,它会给出一个错误,指出给定的参数是未定义的。
    【解决方案2】:

    有人会认为 REST API 会为您提供 JSON,但您需要检查它是否是有效的 JSON(JSONP 在此处无效)?

    您可以将 dataType 放到您的 Ajax 函数中并让 jQuery 解决,这样如果它不是有效的 JSON,您至少会得到一些东西。

    试试这个:

    $.ajax({
          url: 'get_image_data.php',
          type: 'POST',
          data: {'url': url }
        }).done(function(data) {
           console.log(data);
        }).fail(function() {
           console.log('Your ajax just failed');
    });
    

    打开控制台,看看打印了什么

    在 PHP 函数的末尾我倾向于这样做:

    exit(json_encode($someData));
    

    以 JSON 格式返回数据,但打印数据的任何内容都可以。

    【讨论】:

    • 它仍然声明 $_POST['url'] 未定义
    • @DijkeMark - 您可能没有将其设置为 POST 请求,请尝试 $_GET['url'],因为这可能是 JSON 的标准方法。
    • 这确实是问题所在。它现在返回正确的数据。谢谢大佬
    • 编辑了我的答案,这样您就可以使用 POST 请求(如果愿意),但 JSON 将始终默认为 GET,而 JSONP 仅支持 GET。
    【解决方案3】:

    试试这个

    echo json_encode( $photos);
    

    【讨论】:

      【解决方案4】:

      你需要回声

      echo $photos;
      

      如果 $photo 还不是 json,则由 @nickb 调整,然后先将其转换为 json,然后再回显。

      echo json_encode($photos)
      

      如果你想获取数据,在 jQuery 中

      onSuccess: function(data, status) {
          //var data contains the returned json.
      }
      

      【讨论】:

      • 但是我如何在 jQuery 中使用它呢?当我尝试在成功方法中插入一个变量作为参数时,它会给出一个错误,指出给定的参数是未定义的。
      • FireBug 现在给出一个错误,指出 $_POST['url'] 未定义。这是为什么呢?
      • $active_url = $_POST['url'];更改为$active_url = isset($_POST['url']) ? $_POST['url'] : '';
      • 你没有检查是否设置了url的POST值,即使没有设置它也会尝试执行,这会导致错误。
      • 这听起来很合乎逻辑,除了我发送的是一个 url,因为我把它放在了 ajax 请求中。数据:{'url':网址}。那么为什么它仍然说 url 未定义?
      猜你喜欢
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      相关资源
      最近更新 更多