【问题标题】:unable to parse xml data with AJAX + Wordpress无法使用 AJAX + Wordpress 解析 xml 数据
【发布时间】:2018-10-30 13:28:00
【问题描述】:

好吧,我被正式难住了。我一直在试图找出为什么我对 PubMed xml 数据文件中特定项目的调用不起作用......我可以用我当前的编码执行这个:

$test = (string)$id_json->PubmedArticle->MedlineCitation->PMID;

但是,如果我尝试获取更深数组中的变量,它不会返回值。我什至用 console.log(data) 进行了测试,我得到了我的 PMID,但不是我在 XML 文件中的其他更深的值。例如;

$test = (string)$id_json->PubmedArticle->MedlineCitation->Article->Journal->ISSN;

console.log(data) 中的数据不返回任何内容

这是我在 wordpress 中的功能:

function get_abstract(){
$id = $_POST['abstractid'];

$pubmed_api_call = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&retmode=xml&rettype=abstract&id='.$id;

$id_wpget = wp_remote_get($pubmed_api_call, array('timeout' => 20));
if( is_wp_error( $id_wpget ) ) {
    echo "Error Contacting PubMed, please refresh page and try again";
 die();
}
$id_xml = wp_remote_retrieve_body($id_wpget);
$id_json = simplexml_load_string($id_xml);
$test = (string)$id_json->PubmedArticle->MedlineCitation->Article->Journal->ISSN;
if($test === ""){
echo "NOTHING";
die();
}

echo $test;
die();
}

这是我的 javascript AJAX 调用:

jQuery(document).ready(function() {

  jQuery('.reference_header').click(function(e) {
    jQuery(this).find("i").toggleClass("arrow-down arrow-up");
    jQuery(this).nextUntil('.reference_header').slideToggle('fast');
    var abstractid = jQuery(this).data("id");
    e.preventDefault();
        jQuery.ajax({
            url: get_abstract.ajaxurl,
            type: 'POST',
            dataType: 'json',
            data: {
        abstractid: jQuery(this).data("id"),
        action: 'get_abstract'
        },
            success : function(data){
                    jQuery('.'+abstractid).html("TESTING: "+data);
                    console.log(data);
                }

        });
  });

});

我不知道为什么它不起作用...非常感谢任何帮助。

【问题讨论】:

  • 您可能希望将 XML 字符串转换为数组并解析:[link]stackoverflow.com/questions/6578832/…
  • 只是为了澄清:最初你没有得到你的“更深”请求的数据,因为那是一个混合对象(对象 + 数组,而不仅仅是对象?这就是序列化字符串对象的原因如果不编码为 json 就无法检索到它?(如果你还记得这个 :) 干杯

标签: javascript php jquery xml wordpress


【解决方案1】:

所以我想出了问题的解决方案...您需要将字符串文本作为 json 对象传递给 AJAX 以使其正确读取...

工作代码:

PHP:

echo json_encode(array("result" => "$test"));
die();

AJAX:

        success : function(data){
                jQuery('.'+abstractid).html("TESTING: "+data.result);
                console.log(data.result);
            }

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 2012-02-17
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多