繁体   English   中英

Ajax调用php文件中的外部json对象

[英]Ajax call on an external json object within a php file

我正在尝试使用来自不同服务器(技术上是相同的提供程序,但我认为并不重要)的ajax解析外部php文件中的json文件。

无论如何,我在wordpress网站上从数据库创建json文件的代码如下:

        <pre>
            <?php


            global $wpdb;
            if(!isset($wpdb))
            {
                require_once('wp-config.php');
                require_once('wp-includes/wp-db.php');
            }

            $result = $wpdb->get_results ( "SELECT * FROM " . $table_prefix . "some_row" );
            print_r(json_encode($result, JSON_UNESCAPED_SLASHES));
            ?>
        </pre>

该文件的URL是(例如) http://somewebsite.com/phpjson.php

我以这种方式从其他网址(例如) http://app.someotherwebsite.com拨打电话:

$(document).ready(function() {
    $(function(){
            $.ajax({
                url: "http://somewebsite.com/phpjson.php",
                type: "GET",
                dataType: "JSON",
                cache: false,
                success: function(markers) {
                   $.each(markers,function(i, val){
                   //do something
              }
    });
});

由于某种原因,我可能无法调用该文件,可能是因为其他格式的文件,还有什么线索吗?

几个问题:

  1. json_encode()的结果是一个字符串,而不是一个数组。 因此,应该使用echoprint而不是使用print_r()
  2. 将JSON包装在<pre>标记中会使JSON无效,因此jQuery无法对其进行解析。 您应该删除<pre> / </pre>标记。
  3. 为了获得最佳结果,请确保在输出JSON数据之前设置了内容类型标头: header('Content-Type: application/json');

试试看,让我们知道它是否可以解决问题。

检查文档: http : //api.jquery.com/jQuery.ajax/

crossDomain(默认值:对于同域请求为false,对于跨域请求为true)

类型:布尔

如果您希望在同一域上强制执行crossDomain请求(例如JSONP),请将crossDomain的值设置为true。 例如,这允许将服务器端重定向到另一个域。 (添加的版本:1.5)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM