Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
空XML节点导致使用jQuery.ajax时出错_Jquery_Ajax_Xml - Fatal编程技术网

空XML节点导致使用jQuery.ajax时出错

空XML节点导致使用jQuery.ajax时出错,jquery,ajax,xml,Jquery,Ajax,Xml,我需要一种方法来检查XML节点值是空的还是空的,因为如果任何节点为空,我的代码就会失败 <!-- Get Playlist XML from radio_info dir --> function getPlaylist() { $.ajax({ type: "GET", url: radioPath, // ** Set path to radio_info XML here ** cache: false, dataType: "xml",

我需要一种方法来检查XML节点值是空的还是空的,因为如果任何节点为空,我的代码就会失败

<!-- Get Playlist XML from radio_info dir -->
function getPlaylist() {
 $.ajax({
    type: "GET",
    url: radioPath, // ** Set path to radio_info XML here ** 
    cache: false,
    dataType: "xml", 
    error: function(jqXHR, textStatus, errorThrown) {                             
    alert("error:" + errorThrown );
},
    success: nowPlaying
    //nowPlaying found the XML and retreived it

});
};

//nowPlaying gets vars from xml on getPlaylist success


var stationid = xml.getElementsByTagName("stationid")[0].childNodes[0].nodeValue;
var currentdate = xml.getElementsByTagName("currentdate"[0].childNodes[0].nodeValue;
var artist = xml.getElementsByTagName("artist")[0].childNodes[0].nodeValue;
var title = xml.getElementsByTagName("title")[0].childNodes[0].nodeValue;
var album = xml.getElementsByTagName("album")[0].childNodes[0].nodeValue;
var year = xml.getElementsByTagName("year")[0].childNodes[0].nodeValue;
var pStart= xml.getElementsByTagName("timestamp")[0].childNodes[0].nodeValue;
var duration = xml.getElementsByTagName("duration")[0].childNodes[0].nodeValue;
var type = xml.getElementsByTagName("type")[0].childNodes[0].nodeValue;
var artfile = xml.getElementsByTagName("artfile")[0].childNodes[0].nodeValue;
var currentfile = xml.getElementsByTagName("currentfile")[0].childNodes[0].nodeValue;
var recent1 = xml.getElementsByTagName("recent1")[0].childNodes[0].nodeValue;
var recent2 = xml.getElementsByTagName("recent2")[0].childNodes[0].nodeValue;
var recent3 = xml.getElementsByTagName("recent3")[0].childNodes[0].nodeValue;
var recent4 = xml.getElementsByTagName("recent4")[0].childNodes[0].nodeValue;

函数getPlaylist(){
$.ajax({
键入:“获取”,
url:radioPath,//**在此处设置radio_info XML的路径**
cache:false,
数据类型:“xml”,
错误:函数(jqXHR,textStatus,errorshown){
警报(“错误:+错误抛出”);
},
成功:现在开始
//nowPlaying找到了XML并检索了它
});
};
//nowPlaying在getPlaylist成功时从xml获取变量
var stationid=xml.getElementsByTagName(“stationid”)[0]。childNodes[0]。nodeValue;
var currentdate=xml.getElementsByTagName(“currentdate”[0]。子节点[0]。节点值;
var artist=xml.getElementsByTagName(“artist”)[0]。子节点[0]。节点值;
var title=xml.getElementsByTagName(“title”)[0]。子节点[0]。节点值;
var album=xml.getElementsByTagName(“album”)[0]。子节点[0]。节点值;
var year=xml.getElementsByTagName(“年”)[0].childNodes[0].nodeValue;
var pStart=xml.getElementsByTagName(“时间戳”)[0].childNodes[0].nodeValue;
var duration=xml.getElementsByTagName(“duration”)[0]。子节点[0]。节点值;
var type=xml.getElementsByTagName(“类型”)[0]。子节点[0]。节点值;
var artfile=xml.getElementsByTagName(“artfile”)[0]。子节点[0]。节点值;
var currentfile=xml.getElementsByTagName(“currentfile”)[0]。子节点[0]。节点值;
var recent1=xml.getElementsByTagName(“recent1”)[0].childNodes[0].nodeValue;
var recent2=xml.getElementsByTagName(“recent2”)[0].childNodes[0].nodeValue;
var recent3=xml.getElementsByTagName(“recent3”)[0].childNodes[0].nodeValue;
var recent4=xml.getElementsByTagName(“recent4”)[0].childNodes[0].nodeValue;
如果上述任何变量查看xml中的空节点,代码就会中断

示例XML代码:

<?xml version="1.0" encoding="ISO-8859-1"?>
<event>
<station>
<stationid><![CDATA[MIKE'S FAMOUS RADIO]]></stationid>
<currenttime><![CDATA[7:30 pm]]></currenttime>
<currentdate><![CDATA[January 06, 2014]]></currentdate>
</station>
<song>
<artist><![CDATA[Spirit]]></artist>
<title><![CDATA[I Got a Line on You]]></title>
<album><![CDATA[The Family That Plays Together]]></album>
<timestamp>7:30 pm</timestamp>
<duration>02:38</duration>
<type><![CDATA[MUSIC]]></type>
<url><![CDATA[]]></url>
<year>1968</year>
<genre><![CDATA[Rock]]></genre>
<cdfile><![CDATA[505-13]]></cdfile>
<copyright><![CDATA[]]></copyright>
<composer><![CDATA[California]]></composer>
<publisher><![CDATA[Hollenbeck]]></publisher>
<comments><![CDATA[]]></comments>
<artfile><![CDATA[The Family That Plays Together.jpg]]></artfile>
<currentfile><![CDATA[505-13]]></currentfile>
</song>
<recent>
<recent1><![CDATA[7:26 pm - Talking Heads - Take Me to the River  (1978)]]></recent1>
<recent2><![CDATA[<!--BSIRECENTX2-->]]></recent2>
<recent3><![CDATA[<!--BSIRECENTX3-->]]></recent3>
<recent4><![CDATA[<!--BSIRECENTX4-->]]></recent4>
</recent>
</event>


我更喜欢使用jQuery遍历来查找值

var $xml = $(xml); 
var stationid = $xml.find('stationid').text();

正如我在评论中所说,它可能比本机dom遍历慢一些,但除非处理100条记录,否则这应该不会是一个问题。它大大提高了代码的可读性

使用jQuery遍历xml内容,如
var$xml=$(xml);var stationid=$xml.find('stationid').eq(0).children(':eq(0)).text()
您也可以共享xml示例吗确保这里有一个上面编辑的xml示例,然后它应该像
var$xml=$(xml);var stationid=$xml.find('stationid').text()一样简单;
您可以试试吗