将JSON添加到选项值

时间:2014-12-05 14:33:52

标签: javascript php jquery ajax json

我已经使用PHP一段时间了。我刚开始学习如何使用JSON。

我能够创建一个返回JSON的PHP文件。在我的主文件中,我引用了PHP文件并获取了JSON对象。

我可以在下拉选择菜单中显示对象,如下所示:

 $.getJSON( "folder/services.php", function( data )
 {
   $.each(data, function(index, item)
   {
     $('#service').append($("<option>" + item.SERVICE + "</option>"));
   });
 });

上面的代码工作正常。我可以在下拉SELECT选项中显示SERVICE值。

我想弄清楚的是如何将服务转换为OPTION的值。我希望我说得对。

通常,OPTION标记如下所示:

 <option value="SERVICE_A">Service A</option>
 <option value="SERVICE_B">Service B</option>
 ...

但是由于我使用的是JSON,我不知道如何将值传入OPTION。

我试图在JQuery中使用PHP,但是没有成功。我会告诉你我的尝试:

 $('#service').append($("<option value='".+ item.SERVICE +."'>" + item.SERVICE + "</option>"));

******编辑******

我尝试了以下LShetty提交的这段代码:

 $.getJSON( "folder/services.php", function( data )
 {
   var strToAppend = "";
   $.each(data, function(index, item)
   {
     strToAppend += $("<option/>",
     {
       'value': item.SERVICE,
       'text': item.SERVICE
     });
   });
   $('#service').append(strToAppend);
 });

我只对这段代码感到茫然。有谁看到我做错了什么?

2 个答案:

答案 0 :(得分:3)

你走在正确的轨道上。但是,不要尝试使用.进行JS中的连接;它是一个PHP的东西。 .+并不适用于任何一种语言。

更安全,更jQuery-ish的方法(当"'<SERVICE中存在$('<option>'). attr('value', item.SERVICE). text(item.SERVICE). appendTo($('#service')); ,{{1}},{{1}}等时,它会起作用:

{{1}}

答案 1 :(得分:0)

保罗有上面的答案。这更像是一种优化。在循环中修改DOM是昂贵的!在这个具体问题中可能没问题,因为我只看到2个项目。因此,总是在循环之外构造你的字符串,并在你准备好时立即附加所有字符串。

var strToAppend = "";
$.each(data, function(index, item) {

  strToAppend += $("<option/>", {
    'value': item.SERVICE,
    'text': item.SERVICE
  });
});

$('#service').append(strToAppend);

希望有所帮助:)