AJAX with WordPress HTTP API



我是 php 的新手,在这里停留在我的轨道上,所以任何帮助都值得赞赏。我在JS文件中编写了一些函数来渲染和更新我制作的WordPress模板的图库视图。从updateGallery()函数中,我在按下页面上的提交按钮后进行了 AJAX 调用,但收到"解析器错误"。

Arguments(3) [{…}, "parsererror", SyntaxError: Unexpected token A in JSON at position 0 at parse (<anonymous>) at Ut (https://…, callee: ƒ, Symbol(Symbol.iterator): ƒ]

我直接在我的 WP 模板中尝试了 API 请求的代码来呈现响应,它按预期工作,但是当我尝试合并我的脚本时,我收到错误,我无法弄清楚是什么导致了它。

.JS

function updateGallery() {
    var county = $("#county").val();
    jQuery(".galleryGrid").fadeOut("fast", function() {
        console.log("ajax request");
        jQuery(".galleryGrid").html("").hide();
        $.ajax({
            type : "GET",
            dataType : "JSON",
            url : ajax.url,
            data : { 
                action: "get_gallery_data",
                county_id : county
            },
            error: function(response, error) {
                console.log(arguments);
                alert("Failed because: " + error);
            },
            success : function(response) {
                if(response.type === "success") {
                    console.log("Success")
                    renderGrid(response.data);
                }
            }
        });
    });
}

.PHP

add_action("wp_ajax_nopriv_get_gallery_data", "get_gallery_data");
add_action("wp_ajax_get_gallery_data", "get_gallery_data");
function get_gallery_data() {
    $county_id = $_REQUEST[county_id];
    $base_api_url = "https://some.api.com/";
    $filters = array(
        "field" => "field_153",
        "operator" =>"is",
        "value" => $county_id
    );
    $filters_url = rawurlencode(json_encode($filters));
    $api_url = $base_api_url."?filters=".$filters_url;

    $request = wp_remote_get($api_url, array(
        "headers" => array(
            "Application-Id" => "5xxxxxx",
            "REST-API-KEY" => "0xxxxxx",
        ),
    ));
    $body = wp_remote_retrieve_body($request);
    $output = json_decode($body, true);
    echo $output;
    die();
};
 $output = json_decode($body, true);

//改变

 $output = json_encode($body, true);

最新更新