2015-01-26 127 views
0

所以,我無法從我的客戶端jsp中檢索信息。 JavaScript執行,警報打印,但是在java servlet中查詢變爲null,然後將null寫入記錄器。我似乎無法弄清楚爲什麼查詢現在爲空。getParameters始終返回null

HTML:

<div id="query"> 
    <div id="querybar"> 
     <form onsubmit="query();return false;" method="get"> 
     <input type="text" id="querytext" placeholder="Run a query" name="querytext"> 
     </form> 
     <div id="queryimg-container"> 
      <img src="styles/magnifyingglass.png" id="queryimg" alt="" /> 
     </div> 
    </div> 
</div> 

JS:

function query() { 
    $.get('QueryHelper', function(data) { 
     alert("Somesortofalert"); 
    }); 
} 

的Java Servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String query = request.getParameter("querytext"); 
    response.setContentType("text/plain"); 
    @SuppressWarnings("resource") 
    PrintWriter writer = response.getWriter(); 
    sLogger.info(query); 
} 

有人能看到什麼錯?我在這裏超級難住。

+0

請描述你採取什麼樣的用戶行爲,然後你觀察客戶端和服務器發生什麼。 「檢索信息出現問題」並不完全描述你觀察到的內容。 – jfriend00 2015-01-26 21:45:47

+0

「我有麻煩」不是一個好的描述。請解釋你所經歷的行爲是什麼,以及你期望的行爲是什麼。 – RealSkeptic 2015-01-26 21:46:09

+0

從ajax調用中獲得什麼?嘗試添加'.fail(function(){})'到你的'$ .get'調用來查看哪些是錯誤的... – albciff 2015-01-26 21:46:10

回答

1

這將是null,因爲該名稱的參數沒有通過Ajax請求發送。

儘管由onsubmit事件啓動,但$.get()不具備<form>的任何自動知識。您可以使用data參數收集或指定要包含在請求中的任何參數。

$.get('QueryHelper', { querytext: 'foo bar' }, function (res) { 
    // ... 
}); 

提供您必須將<form>或它的輸入的基準,則可以使用.serialize()製備字段的名稱和值作爲data

<form onsubmit="query(this); return false;" method="get"> 
<!--     ^^^^       --> 
function query(form) { 
    //   ^^^^ 

    $.get('QueryHelper', $(form).serialize(), function (res) { 
     //    ^^^^^^^^^^^^^^^^^^^ 

     // ... 
    }); 
} 
+0

太棒了!使用$('#querytext')。val()替換'foo bar',這正是我想要它做的! 第二個選擇是否有任何固有的優點離子?或者他們只是兩種做法? 此外,這不是一個比獲得更多的職位,因爲我發佈的東西到servlet?因此,我不應該改變一切發佈? – Jake 2015-01-26 22:00:07

+1

@Jake在這種情況下,直接檢索單個文本字段可能更簡單。 '.serialize()'特別適用於使用多種輸入類型的較大表單。 – 2015-01-26 22:19:38

+0

我認爲這很可能是差異。由於序列化解決方案似乎工作,我想我會留下它。再次感謝! – Jake 2015-01-26 22:31:26