如何在另一个函数中使用一个JavaScript函数接收的JSON对象?
我编写了一个函数,通过ajax调用返回JSON格式。JSON是如何在另一个函数中使用一个JavaScript函数接收的JSON对象?,javascript,ajax,json,Javascript,Ajax,Json,我编写了一个函数,通过ajax调用返回JSON格式。JSON是 { "communication": [{ "communication_name": "None", "communication_id": "1" }], "hardware": [{ "hardware_name": "XXXXXXXX", "hardware_id": "6" }], "Sofware": [{
{
"communication": [{
"communication_name": "None",
"communication_id": "1"
}],
"hardware": [{
"hardware_name": "XXXXXXXX",
"hardware_id": "6"
}],
"Sofware": [{
"software_name": "XXXXXX",
"software_id": "3"
}, {
"software_name": "XXXXXXXXXXXXX",
"software_id": "4"
}]
}
这是获取此响应的JavaScript函数:
function getModelData(model_id, model_name){
var xmlHttp = createXmlHttpRequestObject();
try {
xmlHttp.open("GET", "ajaxmodel_new.php?model_id="+model_id,true);
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status==200){
var myJSONObject = JSON.parse(xmlHttp.responseText)
//alert(myJSONObject.communication[0].communication_name)
}
}
xmlHttp.send(null);
} catch (e){
alert("Can't connect to server:\n" + e.toString());
}
}
它得到了正确的回应。还有一个功能用于在“选定”下拉列表中获取选定值:
<div id="selected_options">
<select onchange="test()" id="selected_opt">
<option value="0" selected>-Select-</option>
<option value="1">Communication</option>
</select></div>
function test() {
var get_id = document.getElementById('selected_opt');
var result = get_id.options[get_id.selectedIndex].value;
alert(result);
}
-挑选-
沟通
功能测试(){
var get_id=document.getElementById('selected_opt');
var result=get\u id.options[get\u id.selectedIndex].value;
警报(结果);
}
客观的
我需要在
test()
函数中使用JSON响应,即myJSONObject
。如何使用test()
函数中的getModelData()
ajax函数中获得的var myJSONObject
?从xmlHttp.onreadystatechange
中的函数调用test()
,将解码后的对象作为参数传递。我在解析JSON对象时采用了不同的方法
我从PHP端创建对象并将其存储在变量中,比如,$JSONvar
。现在我echo
变量
然后在客户端,我就是这样截取对象的
var JsonObject = {};
var http = new XMLHttpRequest();
http.open("GET", url, true); //url is the url echoing the jsonString
http.onreadystatechange = function () {
if (http.readyState == 4 && http.status == 200) {
var responseTxt = http.responseText;
myJSONObject = eval('(' + responseTxt + ')');
test(myJSONObject);
}
}
http.send(null);
您的测试函数应该能够像这样访问对象
function test(myJSONObject) {
var object = myJSONObject;
alert(object);
var get_id = document.getElementById('selected_opt');
var result = get_id.options[get_id.selectedIndex].value;
alert(result);
}
我没有得到正确的东西,你能简单地告诉我或者如何编码吗?我在这里使用的是,我们可以将myJSONObject声明为全局变量,这样我们就可以在函数中的任何地方访问它,像这样使用eval可能是危险的。如果有人在你的网络中使用DNS中间人攻击,将请求重定向到另一个服务器,他们可以将任意JavaScript插入到响应中,EVE将运行它。我想我们可以编写一个函数来对返回JSON值进行消毒以检查注入,然后再使用它。