ユーザーが 2 つのテキスト ボックスに入力した入力に基づいて、Spring MVC 3 アプリで検索結果を表示しようとしています。私は dojo xhrGET request (およびユーザー入力をいくつかの要求パラメーターとして使用しています) を使用しています。これらのボックスの値に基づいて検索結果を dojogrid に表示することを意図しています。
リクエスト (下記のサンプル URL)、
http://localhost:8080/SampleApp/subscribers?customerId=091300036&searchBy=ci)
ブラウザのアドレスバーに貼り付けると正常に動作します。ただし、xhrGET 経由で呼び出すと、応答が表示されず、コントローラーに接続していません。
FireBug では、両方のケースで同じリクエストが表示されます。
GET http://localhost:8080/SampleApp/subscribers?customerId=091300036&searchBy=ci 200 OK
ただし、(ブラウザー経由で) 成功した場合の応答は JSON オブジェクトですが、dojo 要求の場合は、応答に jsp ソース コード全体が含まれています。
xhrGET リクエストで何をすべきですか。正しい道場イベントを使用していませんか? これは検索なので、POST ではなく GET を使用していました。関連する html および js コードを次に示します。
<input id="customerId" >
<input id="searchName" >
<button dojoType="dijit.form.Button" type="submit" onclick=search()>
Search
</button>
dojo.ready(function(){
var textbox = new dijit.form.TextBox({
value: "Search By Name or Email",
onFocus: function(){
var ph = dijit.byId("searchName");
ph.attr("value",""); },
placeHolder: "Search By Name or Email"
}, "searchName");
textbox.startup();
});
dojo.ready(function(){
var textbox = new dijit.form.TextBox({
value: "Customer Id",
onFocus: function(){
var ph = dijit.byId("customerId");
ph.attr("value",""); },
placeHolder: "Customer Id"
}, "customerId");
textbox.startup();
});
function search() {
var criteria1 = dijit.byId("customerId").value;
var criteria2 = dijit.byId("searchName").value;
dojo.xhrGet({
// The URL of the request
url: "/SampleApp/subscribers?customerId=" + criteria1 + "&searchBy=" + criteria2,
handleAs: "json",
load: function(newContent) {
},
// The error handler
error: function() {
alert(error);
}
});
}