Окно 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 51

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.');
   }
}

полный код объясняется, показывая нормальную форму и элементы формы.