如何在jquery中读取对象值
我想在jquery中读取对象值,但如果我尝试使用文本函数,它会显示为空。代码如下:如何在jquery中读取对象值,jquery,Jquery,我想在jquery中读取对象值,但如果我尝试使用文本函数,它会显示为空。代码如下: var param = $(this).find('parameter'); if(param.attr('pathvar')){ var pathvar=param.attr('pathvar'); url=url+'/'+pathvar alert(ur
var param = $(this).find('parameter');
if(param.attr('pathvar')){
var pathvar=param.attr('pathvar');
url=url+'/'+pathvar
alert(url);
}
var numLow = 0;
var numHigh = (param.length-1);
var adjustedHigh = (parseFloat(numHigh) - parseFloat(numLow)) + 1;
var numRand = Math.floor(Math.random()*adjustedHigh) + parseFloat(numLow);
alert(numRand);
alert("here");
alert(param);
var selParamVal = param.eq((numRand)).text();
alert(param.eq((numRand)).text());
makeAPIRequest(selParamVal,requestType,url);
}
});
}
}
function makeAPIRequest(reqjson,reqType,url){
var json = JSON.stringify(reqjson);
$.ajax({
url:url,
type:reqType,
processData: false,
contentType:"application/json; charset=utf-8",
data:reqjson,
headers:{sm_user:'999999300'},
success:function(data){
var resp = JSON.stringify(data);
var textarea = jQuery('#responseEl');
textarea.text(resp);
},
error:function(jqXHR, textStatus, errorThrown){
var textarea = jQuery('#responseEl');
textarea.text(jqXHR.responseText);
}
});
}
selParamVal是空的。即使我将numRand添加为[numRand],它也不会进行ajax调用
尝试读取此xml:我能够获取url,但在参数中失败
<?xml version="1.0" encoding="UTF-8"?>
<apis xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<api name="getFieldType" requesttype ="GET">
<url>/fieldtype/</url>
<parameters>
<parameter><![CDATA[fieldtype=textbox&fieldId=8668376496495]]></parameter>
<parameter><![CDATA[fieldtype=number&fieldId=93468613046610]]></parameter>
<parameter><![CDATA[fieldtype=multiline&fieldId=1367537832000]]></parameter>
</parameters>
</api>
</apis>
$(this).find('.parameter');
我想你的问题是这个
$(this).find('parameter');
它既不是标识符,也不是类选择器,也不是元素名
将其更改为相应的选择器。像下面的属性一样,将选择class参数
<?xml version="1.0" encoding="UTF-8"?>
<apis xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<api name="getFieldType" requesttype ="GET">
<url>/fieldtype/</url>
<parameters>
<parameter><![CDATA[fieldtype=textbox&fieldId=8668376496495]]></parameter>
<parameter><![CDATA[fieldtype=number&fieldId=93468613046610]]></parameter>
<parameter><![CDATA[fieldtype=multiline&fieldId=1367537832000]]></parameter>
</parameters>
</api>
</apis>
$(this).find('.parameter');
更新:我让你的代码工作。问题似乎是$this没有引用xml数据
在ajax调用中,尝试添加dataType:xml,例如:
$.ajax({
url:url,
type:reqType,
processData: false,
contentType:"application/json; charset=utf-8",
data:reqjson,
headers:{sm_user:'999999300'},
dataType:"xml", // add this!
...
看看是否有效
如果没有,那么我认为您可能需要使用以下内容获取selParamVal:
var selParamVal = param.eq(numRand).html();
您将从中得到如下结果:,因此您只需要解析出
此外,我注意到以下代码:
var param = $(xml).find('parameter'); // this returns an array of parameters
if(param.attr('pathvar')){ // so this line will always be false
var pathvar=param.attr('pathvar');
rl=url+'/'+pathvar
alert(url);
}
您将需要这样的内容:
var param = $(xml).find('parameter');
param.each(function(i, parameter) {
if (parameter.attr('pathvar')) {
var pathvar=param.attr('pathvar');
rl=url+'/'+pathvar;
return false;
}
});
能否显示您的console.logparam。。。?htmlparameter是我的xml@user1195292,你应该在你的问题中说明这一点。我搞错了。我添加了xml作为参考,请帮助我。@user1195292,我想我解决了你的问题。检查我答案中的更新。顺便说一下,我假设你的$this在$this中。查找'parameter';是从服务器返回的xml内容