Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WordPress AJAX问题_Javascript_Php_Json_Ajax_Wordpress - Fatal编程技术网

Javascript WordPress AJAX问题

Javascript WordPress AJAX问题,javascript,php,json,ajax,wordpress,Javascript,Php,Json,Ajax,Wordpress,我一直在尝试将一个数组从PHP发送到javascript,以便显示数据库中的搜索结果。我已经将数组转换为JSON,现在似乎无法检索它。我从未使用过AJAX,但我有一些在这里工作的人使用过AJAX,尽管他们没有花太多时间在AJAX上,但没有人能够解决确切的问题 $(document).ready( function() { var data = {}; $.ajax({ type: 'GET', url: '../wp-content/pl

我一直在尝试将一个数组从PHP发送到javascript,以便显示数据库中的搜索结果。我已经将数组转换为JSON,现在似乎无法检索它。我从未使用过AJAX,但我有一些在这里工作的人使用过AJAX,尽管他们没有花太多时间在AJAX上,但没有人能够解决确切的问题

 $(document).ready( function() {
     var data = {};
     $.ajax({
         type: 'GET',
         url: '../wp-content/plugins/advantage-geo/get_data.php',
         data: "data",
         dataType: 'json',
         cache: false,
         success: function(result) {
            alert(result.d);
            console.log(result);
         },
         error: function(XMLHttpRequest, textStatus, errorThrown) { 
         alert("Status: " + textStatus); alert("Error: " + errorThrown); 
      }    
   });
});
这是来自JS文件的调用。它以}结尾;但是它没有被带到代码块中,所以我删除了它

下面是PHP的示例

<?php 

header("Content-type:json");

global $wpdb;

$sql = "SELECT * FROM wptest_geo_db";
$result = $wpdb->get_results($sql) or die(mysql_error());


echo json_encode($result);

print_r(json_decode($person_array));
print_r($person_array);

?>

JSON是正确创建的,我可以在php文件的页面上显示它。AJAX调用抛出了一个500内部服务器错误,我不知道为什么。

我的回答可能不会直接提到500服务器错误,但仔细阅读我的回答可能会帮助您解决这个问题

AJAX调用不需要将HTTP请求类型作为JSON发送,所以只需要将编码的JSON作为字符串输出。AJAX会将其标识为JSON数据,您甚至不需要告诉jQueryAjax您需要JSON数据,它会标识

<?php 
    // it's not required that the response HTTP request is of type JOSN
    // just ignore this
    //header("Content-type:json");

    global $wpdb;

    $sql = "SELECT * FROM wptest_geo_db";
    $result = $wpdb->get_results($sql) or die(mysql_error());

    echo json_encode($result);

    // you've echo-ed the encoded JSON just above
    // why would you print the arrays?
    // I assume it's for testing purpose
    //print_r(json_decode($person_array));
    //print_r($person_array);
?>

现在,转到WordPressAjax。你这样做完全不对。请阅读本文档,了解如何在WordPress中处理AJAX。测试并试用链接的AJAX教程/文档中的内容,如果您在尝试时遇到任何问题,请返回此处。

显示PHP中的错误-^他说了什么。500错误意味着这是一个服务器错误,因此您需要查看实际的错误消息。试试链接上的建议。你也可以检查你的服务器错误日志。你的PHP失败了,检查Web服务器的错误日志。你考虑WordPress处理Ajax的方法吗?这里是Wordpress有自己独特的ajax方式的链接,从无冲突DOM ready handlerAs开始,每个文档中都应该包括wp_die;在本例的最后,@Musk您是对的,但这是WP-AJAX实现的一部分。现在,这还不算太近