0

我有以下格式的 json 数据

 {"Jack":["my1@email.com","US"],"Rob":["rob@email.com","UK"]}

我有一个选择标签,如果从选择框中选择的值等于“ Jack”,那么它应该打印数据"my1@email.com","US"

更改功能上的选择框是

       function printDataOf(val){

        now if selectd value is Jack
        alert()   // should alert my1@email.com
        alert()   // should alert US

我该怎么做?

4

8 回答 8

1

onchange 函数将无法接收实际值。不过,您可以传递选择对象(作为“this”)。

<select onchange="printDataOf(this)">
    <option/>
    <option value="Jack">Jack</option>
    <option value="Rob">Rob</option>
</select>

现在在处理程序中,您可以获得实际选择的值并显示所需的数据。

var json_obj =  {"Jack":["my1@email.com","US"],"Rob":["rob@email.com","UK"]};

function printDataOf(val){
  var Mval = $(val).val();
  alert(json_obj[Mval][0]);
  alert(json_obj[Mval][1]);
}

检查 json 对象中是否存在 Mval 是明智的。如果它不存在,您将收到错误消息。我在这里不是为了简单起见。

这是一个工作示例

于 2013-09-03T10:34:22.503 回答
1

这应该这样做;

printDataOf('Jack');

function printDataOf(val) {

    var data = '{"Jack":["my1@email.com","US"],"Rob":["rob@email.com","UK"]}';

    var match = JSON.parse(data)[val];
    var email = match[0];
    var country = match[1];

    alert(email);
    alert(country);

}
于 2013-09-03T10:45:07.793 回答
0

这应该有效。

    function check( json_obj ) 
{
    return json_obj[0] == 'Jack'
}

如果你使用 jquery,也试试这个:

json_obj = jQuery.parseJSON( json_obj.responseText );

要检查你真正得到了什么,请使用 firebug 的调试器

于 2013-09-03T10:32:34.013 回答
0

试试这个,json用你的实际对象改变:

function printDataOf(val)
{
   for (name in json)
   {
      if (name == val)
      {
          alert(json.name[0]);
          alert(json.name[1]);
      }
   }
}
于 2013-09-03T10:34:10.070 回答
0

这应该可以满足您的需求,

var result = {"Jack":["my1@email.com","US"],"Rob":["rob@email.com","UK"]};

function printDataOf(val){
   var data = JSON.parse(result);

   var selected = data[val];
   var selected_arr = selected.split(',');

   //now if selectd value is Jack
   alert(selected_arr[0])   // should alert my1@email.com
   alert(selected_arr[1])   // should alert US
}
于 2013-09-03T10:35:43.947 回答
0
for (key in jsonobject) {
   alert(jsonobject[val][0];
   alert(jsonobject[val][1];
   alert(jsonobject[val][2];
}
于 2013-09-03T10:41:08.800 回答
0

循环 Json 数据,然后比较和打印。使用 jquery...

  var data = {"Jack":["my1@email.com","US"],"Rob":["rob@email.com","UK"]}
var selecteVal="Jack";

$.each(data,function(key,index){
       if (key==selecteVal){
            alert(data[key][0])
             alert(data[key][1])
            }    
       });

JSFiddle

于 2013-09-03T10:46:26.023 回答
0

尝试这个。

  var data = {"Jack":["my1@email.com","US"],"Rob":["rob@email.com","UK"]}
  var selecteVal="Jack";

  if(typeof(data[selecteVal])!='undefined'){
     alert(data[selecteVal][0]);//my1@email.com
     alert(data[selecteVal][1]);//US
  }

演示

于 2013-09-03T10:52:42.973 回答