Окно Javascript.открыть значения пропусков с помощью POST
У меня есть функция 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 без реализации форм по всей странице (на странице перечислены 100 заказов со списком поставщиков-я попытка сопоставить поставщиков)
6 ответов:
я использовал вариант выше, но вместо печати 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-грейдер. Я улучшил код, не надо использовать w3schools-Target
для чего это стоит, вот ранее предоставленный код, инкапсулированный в функцию.
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-грейдер !
ниже общей функции для окна.откройте значения pass с помощью 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;
код помог мне выполнить мое требование.
Я сделал некоторые изменения и с помощью формы, я закончил это. Вот мой код-
нужен атрибут' target ' для 'form' -- вот и все!
форма
<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>
JavaScript
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.'); } }
полный код объясняется, показывая нормальную форму и элементы формы.