代码之家  ›  专栏  ›  技术社区  ›  core

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

  •  -3
  • core  · 技术社区  · 6 年前
    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。请看我是否可以通过这种方式将内容附加到url?告诉我更好的方法。

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   flyingfox    6 年前

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

    a、 首先,我建议您使用 jQuery ajax 而不是原来的 Ajax ,它将隐藏不同浏览器的实现。使用它,您可以如下所示:

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

    b、 自 Http Get 方法有参数长度限制,有关详细信息,请访问 maximum length of HTTP GET request? .您需要使用 POST 而不是 GET ,使用时 邮递 ,何时可以使用 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(){}
    });