2012-02-09 6 views
2

Привет, как получить элементы массива json в разных идентификаторах в ответ?получить json объекты массива в javascript

// стороне сервера JSP

<%@page import="net.sf.json.JSONObject"%> 
<%@page import="net.sf.json.JSONArray"%> 
<% 
    JSONArray arrayObj=new JSONArray();    
JSONObject obj=new JSONObject(); 
obj.put("name","data");// how can i display string "name" in secondcombobox id? 
obj.put("roll_no","data"); how can i display string "roll_no" in thirdcombobox id? 
out.println(obj.toString()); 
%> 

стороне клиента JSP, где элементы извлечения JSON массива в JavaScript

$("#firstcombo").change(function() { 
$.get('comboboxpage.jsp', { combo1Val : $(this).val() }, function(responseData) { 
$("#secondcomboboxid").replaceWith(data.name);// here i want to display name, how can i do it? 
$("#thirdcomboboxid").replaceWith(data.roll_no);// here i want to display roll no, how can i do it? 
}); 
}); 

<input type="text" id="secondcomboboxid" name="secondcomboboxid"/>// how can i show name here? 
<input type="text" id="thirdcomboboxid" name="thirdcomboboxid"/> how can i show roll_no here? 

Как я могу отобразить имя в secondcomboboxid и рулет нет в thirdcomboboxid? Я гугле много, но не смог найти какое-либо решение, Любые идеи, пожалуйста,

+0

разместить в JSON вы получаете в ответ от сервера – Rafay

+0

Пожалуйста, выкладываю полную строковое значение responseData, поэтому я могу быть уверен в его формате. – SoonDead

+0

@ 3nigma Я не получаю ответа со стороны сервера, как мне изменить объекты JSON Array, чтобы получить ответ на стороне клиента? – Tom

ответ

1

попробовать эту клиентскую сторону

<% 
      JSONObject arrayObj= new JSONObject(); 

      arrayObj.put("name","john"); 
      arrayObj.put("roll no","007"); 


      response.setContentType("application/json"); 
      response.getWriter().write(arrayObj.toString()); 

%> 

$.ajax({ 
url:'comboboxpage.jsp', 
dataType:'json', 
type:'GET', 
success:function(data){ 
console.log(data); 
}, 
error:function(jxhr){ 
console.log(jxhr.responseText); 
} 

}); 

здесь полезно link

+0

спасибо 3nigma, но я до сих пор не получаю ответа, никакой идеи? вы протестировали его в своем терминале? – Tom

+0

@ 3nigma ... извините ... это сработало :) – Tom

+0

нет, я не могу проверить его atm, см. В ответном обновлении используйте '$ .ajax' вместо этого и сделайте обработчик ошибок. вы уверены, что путь к 'comboboxpage.jsp' правильный, что говорит вам firebug, показывает ли он статус 200? – Rafay

1

использование

responseData.name 
responseDate.roll_no 

или использовать parseJSON

var obj = jQuery.parseJSON('{"name":"John"}'); 
alert(obj.name === "John"); 
+0

спасибо diEcho за ответ, но на стороне сервера JSON, какую модификацию я должен делать? я не получаю никакой ценности на стороне клиента при изменении события первого поля со списком. – Tom

+0

Я не знаком с JSP. но вы должны увидеть комментарий @Didier Ghys – diEcho

2

При загрузке данных в формате JSON, то лучше использовать метод .getJSON(), который будет автоматически обрабатывать ответ на объект JSON.

Тогда ваши данные ответа являются объектом, вы можете получить доступ к его свойствам с помощью точечной нотации: data.name.

Специальный корпус для второго имущества "roll no". Поскольку есть пробел, вам нужно будет использовать нотацию массива для доступа к значению: data ['roll no'].

$.getJSON('comboboxpage.jsp', { combo1Val : $(this).val() }, function(data) { 
    $("#secondcomboboxid").replaceWith(data.name); 
    $("#thirdcomboboxid").replaceWith(data['roll_no']); 
}); 

В более общем плане, как и упоминалось на @diEcho, чтобы разобрать строку JSON, вы можете использовать $.parseJSON()

+0

+1 для 'getJSON' – diEcho

+0

Не должно быть:' data ['roll no'] 'или есть некоторые изменения, вызванные' arrayObj.add() '? – fncomp

+0

Ты не прав. Я придумал anwser. –

1

Так что, если я получаю вашу установку правильно, вы обработки, например,: 8080 с некоторыми простыми сервлет, и вы хотите вернуть данные JSON через jsp. Я думаю, что это не хорошая идея, но для создания прототипов, я полагаю ... Вот возможный просто заставить его работать:

<% 
    JSONArray arrayObj=new JSONArray();      
    arrayObj.put("name"); 
    arrayObj.put("roll no"); 
    out.println(arrayObj.toString()); 
%> 

Смотрите выше интерфейсных компонентов.

+0

ok для получения данных, я должен следовать правилу Дидье Гиса? но он не отображает имя/roll_no во втором/третьем текстовом поле, посмотрите мой обновленный вопрос, пожалуйста, – Tom

Смежные вопросы