首页 > 解决方案 > 将从 servlet 返回的 hashmap 对象分配给 Javascript 变量

问题描述

我需要var finalout=[];在 javascript 中分配我的 servlet 响应对象并打印它以用于测试目的。我不确定它的失败之处。

Jquery/Ajax/Java 脚本:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script language="javascript">
 var finalout=[];

    $(document).on("click", "#somebutton", function() {  


        $.get("simpleServlet", function(responseJson) 
        {    
            document.write(responseJson);
            finalout=responseJson;
        });
    });
   console.log(finalout);
    console.log("tested3");
var x = document.getElementById("mySelect");


for (i = 0; i < finalout.length; i++)
        {
        var c = document.createElement("option");
           c.text =finalout[i][0];
            x.options.add(c);
        }

function ChangeCarList() {
    var carList = document.getElementById("mySelect");
    var modelList = document.getElementById("carmodel");
    var selCar = carList.selectedIndex-1;
    while (modelList.options.length) {
        modelList.remove(0);
    }
    var cars =  finalout[selCar][1].replace('[', '').replace(']', '').split(",");
    if (cars) {
        var i;
        for (i = 0; i < cars.length; i++) {
            var car = new Option(cars[i],i);
            modelList.options.add(car);
        }
    }
}
</script>     

html:

 <div id="somediv">

    <select id="mySelect" onchange="ChangeCarList()">
        <option value="0">Select car:</option>
    </select>

    <select id="carmodel">
        <option value="0">Select car:</option>
     </select>

     <button id="somebutton">Click me </button>

</div>

小服务程序:

@WebServlet(urlPatterns = { "/simpleServlet"} )

public class SimpleServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public SimpleServlet() {
        super();

    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        HashMap<String, ArrayList<String>> months = new HashMap<>();

        //doing some functions and manipulating it

        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().print(months);

    }

标签: javascriptjavajqueryajaxservlets

解决方案


推荐阅读