2017-11-22 10 views
0

url을 통해 다른 페이지로 일부 값을 전달하려고했습니다. 나는 여러 단계에서 몇 가지 정보를 먼저 얻어야하기 때문에 html로 인라인으로 하드 코딩 할 수 없다. 따라서 제출하기 전에 양식에서 조치를 변경해야합니다. Jquery, submited form 해당 매개 변수를 계속 변경하십시오.

양식

<form id="addActForm" class="w3-container formInput" method="GET" action=""> 
    <p> 
     <input class="w3-radio" type="radio" name="typeAct" value="1"> 
     <i class="fa fa-file-text-o"></i> <label>Assignment</label></p> 
    <p> 
     <input class="w3-radio" type="radio" name="typeAct" value="2" > 
     <i class="fa fa-file-o"></i> <label>File</label></p> 
    <input id="btnSubmit" type="button" class="w3-btn w3-black" value="Add"> 
</form> 

이며,이 내가 제출 및 콘솔을 참조 삭제하면, 그것은 이미 내가 원하는 것을 예를 줘

$('#btnSubmit').click(function(){ 
    var action = PATH + "code=" + code + "&topic=" + topic + "&type=" + type; 
    console.log(action); 
    $('#addActForm').attr('action', action); 
    $('#addActForm').submit(); 
}); 

작업을 처리하는 스크립트입니다

addingActivity.php? 코드 = AIF315 & 주제 = 1 개 & 유형 = 2

콘솔을 통해 수동으로 양식 작업을 확인해도 올바른 값을 갖습니다. 내가 제출하려고 할 때, 그것은 나에게주는이 대신

addingActivity.php? typeAct 2

왜 = 다시 변화? 뭐가 잘못 되었 니?

감사합니다 :)

+0

코드는 어디에 있습니까? 주제 및 유형 변수가 있습니까? 정의 된 것을 보지 마라. –

답변

0

문제는 당신이이 GET으로 양식을 제출 때 (사용자의 입력에서) 형태로 값을 인코딩하고 요청의 URL을두고 있다는 점이다. 따라서 매개 변수는 양식이 생성하는 모든 것으로 대체됩니다. 당신이

대신 형태로 name="typeAct"로 입력을 가지고 있기 때문에 당신이 typeAct=2을받을 이유는, 그냥 기본 경로를하고 당신이

<form id="addActForm" class="w3-container formInput" method="GET" action="<YOUR_BASE_URL>"> 
    <p> 
     <input class="w3-radio" type="radio" name="type" value="1"> 
     <i class="fa fa-file-text-o"></i> <label>Assignment</label></p> 
    <p> 
     <input class="w3-radio" type="radio" name="type" value="2" > 
     <i class="fa fa-file-o"></i> <label>File</label></p> 

    <input type="hidden" class="code" name="code" value="AIF315" /> 
    <input type="hidden" class="topic" name="topic" value="1" /> 

    <input id="btnSubmit" type="button" class="w3-btn w3-black" value="Add"> 
</form> 

은 그럼 그냥 설정 원하는 것을 생성하는 숨겨진 필드를 사용합니다 액션 제출 전에 JS와 그들과 당신이 그런 일하지 않는 이유는 브라우저가 당신

$('#btnSubmit').click(function(){ 
    $("input.code").val(code); 
    $("input.topic").val(topic); 
    $('#addActForm').submit(); 
}); 
0

의 URL 인코딩을하자 :

var element = YOUR FORM ELEMENT; 

var topic= document.createElement("input"); 
    code.setAttribute("type","hidden"); 
    code.setAttribute("topic",topic); 
    element.form.appendChild(topic); 


var code = document.createElement("input"); 
    code.setAttribute("type","hidden"); 
    code.setAttribute("code",code); 
    element.form.appendChild(code); 


var type= document.createElement("input"); 
    code.setAttribute("type","hidden"); 
    code.setAttribute("type",type); 
    element.form.appendChild(type); 

element.form.action = PATH ; 
element.form.submit();