Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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 无法使用AJAX+;解析xml数据;Wordpress_Javascript_Php_Jquery_Xml_Wordpress - Fatal编程技术网

Javascript 无法使用AJAX+;解析xml数据;Wordpress

Javascript 无法使用AJAX+;解析xml数据;Wordpress,javascript,php,jquery,xml,wordpress,Javascript,Php,Jquery,Xml,Wordpress,好吧,我正式被难倒了。我一直在试图找到为什么我对PubMed xml数据文件中的特定项的调用不起作用。。。我可以使用我当前的编码执行此操作: $test=(字符串)$id\u json->PubmedArticle->MedlineCitation->PMID 但是,如果我尝试获取更深数组中的变量,它不会返回值。我甚至使用console.log(数据)进行了测试,我得到了返回的PMID,但没有返回XML文件中的其他更深层次的值。比如, $test=(string)$id\u json->Pubm

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

$test=(字符串)$id\u json->PubmedArticle->MedlineCitation->PMID

但是,如果我尝试获取更深数组中的变量,它不会返回值。我甚至使用console.log(数据)进行了测试,我得到了返回的PMID,但没有返回XML文件中的其他更深层次的值。比如,

$test=(string)$id\u json->PubmedArticle->MedlineCitation->Article->Journal->ISSN

对控制台中的数据不返回任何内容。日志(数据)

以下是我在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);
                }

        });
  });

});

我不知道为什么它不起作用。。。非常感谢您的帮助

所以我想出了解决这个问题的办法。。。您需要将字符串文本作为json对象传递给AJAX,以使其正确读取

工作代码:

PHP:

阿贾克斯:


您可能希望将XML字符串转换为数组并解析:[link]只是为了澄清:最初您没有获得“更深入”请求的数据,因为这是一个混合对象(对象+数组,而不仅仅是对象?这就是为什么序列化字符串对象在没有编码为json的情况下无法检索它?(如果您还记得这一点:)干杯
echo json_encode(array("result" => "$test"));
die();
        success : function(data){
                jQuery('.'+abstractid).html("TESTING: "+data.result);
                console.log(data.result);
            }