检查我的代码。这是一种正确的追加方式吗?

时间:2018-04-15 09:04:54

标签: javascript ajax jsp

function saveToDataBase(save_id,textarea_id,question_no,assg_name,testinput,testoutput)
{
    document.getElementById(save_id).addEventListener('click',function(){

        //alert("Hello");
        var question=document.getElementById(textarea_id).value;
        var question_id=assignment_name+question_no;
        var request;
        var url="saveQuesToDataBase.jsp?question="+question+"&question_id="+question_id+"&assg_name="+assg_name;

        for(var i=0;i<testinput.length;i++)
            {
              var v=document.getElementById(testinput[i]).value;
              url=url+"&testinput"+i+"="+v;
            }

        for(var i=0;i<testoutput.length;i++)
            {
              var v=document.getElementById(testoutput[i]).value;
              url=url+"&testoutput"+i+"="+v;
            }

        var len=testinput.length;
        url=url+"&size_of_arr="+len;

        if(window.XMLHttpRequest)
        {  
        request=new XMLHttpRequest();  
        }
        else if(window.ActiveXObject)
        {  
        request=new ActiveXObject("Microsoft.XMLHTTP");  
        }    
        try
        {  
        request.onreadystatechange=function()
        {  
        if(request.readyState==4 && request.status == 200)
        {  
            alert(request.responseText);
        }  
        };
        request.open("GET",url,true);  
        request.send();  
        }
        catch(e){alert("Unable to connect to server");
        }
    })

}

在单击时调用该函数,但不会将其重定向到saveQuesToDataBase.jsp。请看看我是否可以通过这种方式添加内容?告诉我更好的方法。

testinput和testoutput是textareas的id的两个数组。 我使用循环来检索id并获取值。

1 个答案:

答案 0 :(得分:0)

对于您的代码设计,我有两个建议:

一个。首先,我建议您使用 jQuery ajax 而不是原始Ajax,它会隐藏不同浏览器的工具。有了它,您可以如下所示:

$.ajax({
  url:your_request_url,
  type:"post",//or get
  data:your data,
  success:function(data){},
  error:function(){}
});

湾由于Http Get方法具有参数长度限制,因此可以在 maximum length of HTTP GET request? 中找到详细信息。在使用POST时,您需要使用GET代替POST,何时可以使用data将更多参数传递给ajax

var params ={};//define a parameter object
for(var i=0;i<testoutput.length;i++)
{
   var v=document.getElementById(testoutput[i]).value;
   params["testoutput"+i]=v;
}
$.ajax({
  url:your_request_url,
  type:"post",//or get
  data:params,//passing the parameters.
  success:function(data){},
  error:function(){}
});