에 도달하지 않습니다 나는이처럼 보였다 내 GSP에있는 버튼을했다 :Grails의 : 아약스 매개 변수 컨트롤러
<button id = "select"
onclick = "${remoteFunction(controller: 'customer',
action: 'selectBatch',
params: '\'batchID=\' + selectedBatchID')}">
Select
</button>
모두 잘했다을하고 '일괄 ID'매개 변수 내 컨트롤러가 잘 도달했다, 그러나 나는 것을 깨달았다 나는 버튼이 클릭 될 때마다 어떤 조건이 충족되었을 때만이 함수를 호출하고 싶지 않았다. 그래서,이 같은 내 버튼을 다시 정의 :
<button id = "select" >Select</button>
와 같은 자바 스크립트 함수에 경계 :
이$('#select').click(function() {
if (selectedBatchID == undefined) {
$("#errorMessages p").text("Click a row to choose a batch first.");
$("#errorMessages p").show();
$("#errorMessages p").fadeOut(3000);
}
else {
validBatchID = selectedBatchID;
$("#choosebatch h2").text("Batch ID " + selectedBatchID + ": " + selectedBatchDesc);
$('#AdminConsole p').css("font-size", "30px");
$("#AdminConsole p").html("Batch ID " + selectedBatchID + "<br />" + selectedBatchDesc);
console.log(selectedBatchID);
$.ajax({
type: 'POST',
url: "${createLink(action:'selectBatch', controller:'customer')}/batchID=" + selectedBatchID
});
}
});
이제이 변수는 다음과 같이 인 내 컨트롤러의 기능을 도달하지 않는 것 같습니다 :
def selectBatch = {
println "Batch ID: " + params.batchID
selectedBatch = Batch.findWhere(id: params.batchID.toInteger())
println "Batch selected: " + selectedBatch
}
내 컨트롤러는 불평 때문에 :
............Batch ID: null
Error |
2014-06-10 16:27:54,686 [http-bio-8080-exec-2] ERROR errors.GrailsExceptionResolver - NullPointerException occurred when processing request: [POST] /FatcaOne_0/customer/selectBatch /batchID=35
Cannot invoke method toInteger() on null object. Stacktrace follows:
Message: Cannot invoke method toInteger() on null object
이는 크롬 디버거를 보여줍니다 무엇인가가 크롬 디버거의 값 '35'을 출력하지만, 왜 컨트롤러가 표시되지 않기 때문에
35 VM725:78
POST http://hostname/FatcaOne_0/customer/selectBatch/batchID=35 500 (Internal Server Error) jquery.tools.min.js:38
send jquery.tools.min.js:38
f.extend.ajax jquery.tools.min.js:38
(anonymous function) VM725:79
f.event.dispatch jquery.tools.min.js:37
h.handle.i
그래서 우리가 null가 아닌 것을 알 수 있습니다 이것은 특히 Ajax 호출에 의해 형성된 URI에도 포함될 때 특히 그렇습니까?
이것이 효과적입니다. 왜 이것이 효과가 있었는지 조금 설명해 주시면 감사하겠습니다. 도와 줘서 고마워. –
@AnonymousHuman HTTP POST 요청을 보낼 때 요청 매개 변수를 URL에 추가하지 않고 요청 본문에 전달합니다. '$ .ajax'를 사용할 때 이것을하는 방법은 그것들을'data' 속성의 값으로 전달하는 것입니다 –