POST를 사용하는 Javascript window.open 패스 값
window.open을 사용하여 다른 페이지를 호출하고 결과를 반환하는 javascript 함수가 있습니다.
내 코드 섹션은 다음과 같습니다.
var windowFeatures = "status=0, toolbar=0, location=0, menubar=0, directories=0, resizable=1, scrollbars=1";
window.open ('http://www.domain.com/index.php?p=view.map&coords=' + encodeURIComponent(coords), 'JobWindow', windowFeatures);
내 문제는 GET이 처리 할 많은 데이터를 전달하고 있으며 POST 메서드를 사용하여 전달해야한다는 것입니다.
페이지 전체에 양식을 구현하지 않고 POST 메서드를 사용하여 페이지를 열도록 위의 코드를 어떻게 변환 할 수 있습니까?
위의 변형을 사용했지만 html을 인쇄하는 대신 양식을 작성하여 타사 URL에 제출했습니다.
var mapForm = document.createElement("form");
mapForm.target = "Map";
mapForm.method = "POST"; // or "post" if appropriate
mapForm.action = "http://www.url.com/map.php";
var mapInput = document.createElement("input");
mapInput.type = "text";
mapInput.name = "addrs";
mapInput.value = data;
mapForm.appendChild(mapInput);
document.body.appendChild(mapForm);
map = window.open("", "Map", "status=0,title=0,height=600,width=800,scrollbars=1");
if (map) {
mapForm.submit();
} else {
alert('You must allow popups for this map to work.');
}
php-b-grader 감사합니다 . 나는 그것을 사용할 필요가 없습니다 코드를 개선 () window.open 의 대상이 이미 지정됩니다 형태 .
// Create a form
var mapForm = document.createElement("form");
mapForm.target = "_blank";
mapForm.method = "POST";
mapForm.action = "abmCatalogs.ftl";
// Create an input
var mapInput = document.createElement("input");
mapInput.type = "text";
mapInput.name = "variable";
mapInput.value = "lalalalala";
// Add the input to the form
mapForm.appendChild(mapInput);
// Add the form to dom
document.body.appendChild(mapForm);
// Just submit
mapForm.submit();
대상 옵션-> w3schools-대상
그만한 가치는 이전에 제공된 코드가 함수 내에 캡슐화되어 있습니다.
openWindowWithPost("http://www.example.com/index.php", {
p: "view.map",
coords: encodeURIComponent(coords)
});
기능 정의 :
function openWindowWithPost(url, data) {
var form = document.createElement("form");
form.target = "_blank";
form.method = "POST";
form.action = url;
form.style.display = "none";
for (var key in data) {
var input = document.createElement("input");
input.type = "hidden";
input.name = key;
input.value = data[key];
form.appendChild(input);
}
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
감사합니다 php-b-grader!
window.open에 대한 일반 함수 아래 POST를 사용하여 값을 전달합니다.
function windowOpenInPost(actionUrl,windowName, windowFeatures, keyParams, valueParams)
{
var mapForm = document.createElement("form");
var milliseconds = new Date().getTime();
windowName = windowName+milliseconds;
mapForm.target = windowName;
mapForm.method = "POST";
mapForm.action = actionUrl;
if (keyParams && valueParams && (keyParams.length == valueParams.length)){
for (var i = 0; i < keyParams.length; i++){
var mapInput = document.createElement("input");
mapInput.type = "hidden";
mapInput.name = keyParams[i];
mapInput.value = valueParams[i];
mapForm.appendChild(mapInput);
}
document.body.appendChild(mapForm);
}
map = window.open('', windowName, windowFeatures);
if (map) {
mapForm.submit();
} else {
alert('You must allow popups for this map to work.');
}}
이 질문은 오래 전 이었지만 비슷한 문제를 해결하는 데 도움이 된 모든 의견에 감사드립니다. 나는 또한 여기에 다른 사람들의 대답을 기반으로 약간 수정하고 여러 입력 / 가치를 단일 객체 (json)로 만듭니다. 그리고 이것이 누군가에게 도움이되기를 바랍니다.
js :
//example: params={id:'123',name:'foo'};
mapInput.name = "data";
mapInput.value = JSON.stringify(params);
PHP :
$data=json_decode($_POST['data']);
echo $data->id;
echo $data->name;
이 코드는 내 요구 사항을 충족하는 데 도움이되었습니다.
몇 가지 수정을했고이 양식을 사용하여 작성했습니다. 다음은 내 코드입니다.
'form'에 대한 'target'속성이 필요합니다.
형태
<form id="view_form" name="view_form" method="post" action="view_report.php" target="Map" >
<input type="text" value="<?php echo $sale->myvalue1; ?>" name="my_value1"/>
<input type="text" value="<?php echo $sale->myvalue2; ?>" name="my_value2"/>
<input type="button" id="download" name="download" value="View report" onclick="view_my_report();" />
</form>
자바 스크립트
function view_my_report() {
var mapForm = document.getElementById("view_form");
map=window.open("","Map","status=0,title=0,height=600,width=800,scrollbars=1");
if (map) {
mapForm.submit();
} else {
alert('You must allow popups for this map to work.');
}
}
일반 양식과 양식 요소를 보여주는 전체 코드가 설명되어 있습니다.
참고URL : https://stackoverflow.com/questions/5684303/javascript-window-open-pass-values-using-post
'program tip' 카테고리의 다른 글
Eclipse 실행 가능 실행기가 동반 실행기 jar 창을 찾을 수 없습니다. (0) | 2020.11.28 |
---|---|
각도 리소스에 의해 2d로 구문 분석되는 1 차원 문자열 배열 (0) | 2020.11.28 |
C #! 조건부 속성? (0) | 2020.11.27 |
원격 RDP에서 로컬 컴퓨터로 파일 복사 (0) | 2020.11.27 |
WebClient 요청에 대한 User-Agent 헤더 설정 (0) | 2020.11.27 |