簡體   English   中英

URL太長-如何在jquery中為錨標記執行POST

[英]Too long URL - How to do POST in jquery for anchor tag

在我的應用程序中,我正在使用JQuery數據表來顯示我的產品詳細信息。 我有很多購買過濾器(價格,產品類型等),最后在數據表中,用戶具有查看所選產品詳細信息的鏈接。 表的示意圖如下:

表

在進行表格填充時,我將過濾器參數附加到了錨元素的href中。 代碼段如下:

"mRender" : function(page, type, full) {
        return '<a href="' + CXT_PATH
                + '/page?filters='
                + getFilters()
                + '">' + "LINK" + '</a>'
                }                                       
                }

這里的getFilters()有時會返回100個過濾器,因此創建的網址太長。 我認為,當默認錨鏈接單擊時,它們將作為GET請求傳遞。 因此可能會有大小限制。

所以我不希望我的用戶在選擇更多過濾器時得到奇怪的結果。

我打算做如下:

每當用戶單擊鏈接時,它將調用javascript中的方法並進行表單發布(因為需要重新加載頁面)。 請指導我,如何使用javascript或jquery或任何其他更好的方法來實現這一目標。

我正在使用Spring MVC + JSP + Javascript和JQuery

這是一個開始:

使用XMLHttpRequest對象:

getXHR函數的源代碼: XMLHttpRequest瀏覽器支持

function getXHR() { 
  if (window.XMLHttpRequest) {
    // Chrome, Firefox, IE7+, Opera, Safari
    return new XMLHttpRequest(); 
  } 
  // IE6
  try { 
    // The latest stable version. It has the best security, performance, 
    // reliability, and W3C conformance. Ships with Vista, and available 
    // with other OS's via downloads and updates. 
    return new ActiveXObject('MSXML2.XMLHTTP.6.0');
  } catch (e) { 
    try { 
      // The fallback.
      return new ActiveXObject('MSXML2.XMLHTTP.3.0');
    } catch (e) { 
      alert('This browser is not AJAX enabled.'); 
      return null;
    } 
  } 
}


var xhr = getXHR();
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.send("your-querystring");

您可以嘗試以下方法,在表格中創建表單,然后在單擊過濾器鏈接時將過濾器值分配給表單中的隱藏元素,然后提交表單。

HML

<form action="<server_path>" method="post" id="filterform">
<input type="hidden" name="filters" id="filters" />
<input type="submit/>
</form>

Javascript / Jquery

"mRender" : function(page, type, full) {
        return '<a onclick="' submitFilter() '">' + "LINK" + '</a>'
 }     

submitFilter: function (CXT_PATH){
       $( "#filters" ).val(getFilters());
       $( "#filterform" ).submit();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM