37

フォームを作成してJavaScriptですぐに送信しようとしていますが、何が間違っているのかわかりません。これが私のコードです:

function autoLogIn(un, pw) {
var form = document.createElement("form");
document.body.appendChild(form);
form.method = "POST";
form.action = "login.php";
var element1 = document.createElement("<INPUT NAME='un' TYPE='hidden' VALUE='"+un+"'>");  
 form.appendChild(element1);
var element2 = document.createElement("<INPUT NAME='pw' TYPE='hidden' VALUE='"+pw+"'>"); 
form.appendChild(element2);
form.submit();
}
4

4 に答える 4

103

問題は、createElementがHTMLを受け入れないことです。タグ名を受け入れ、DOM要素を返します。次に、この要素のvalue属性を必要なものに設定できます。

function autoLogIn(un, pw) {
    var form = document.createElement("form");
    var element1 = document.createElement("input"); 
    var element2 = document.createElement("input");  

    form.method = "POST";
    form.action = "login.php";   

    element1.value=un;
    element1.name="un";
    form.appendChild(element1);  

    element2.value=pw;
    element2.name="pw";
    form.appendChild(element2);

    document.body.appendChild(form);

    form.submit();
}
于 2012-10-21T20:28:12.953 に答える
6

変更されたコード:jsfiddle

function autoLogIn(un, pw) {
   var form = document.createElement("form");
   document.body.appendChild(form);
   form.method = "POST";
   form.action = "login.php";
   var element1 = document.createElement("INPUT");         
    element1.name="un"
    element1.value = un;
    element1.type = 'hidden'
    form.appendChild(element1);
    var element2 = document.createElement("INPUT");         
    element2.name="pw"
    element2.value = pw;
    element2.type = 'hidden'
    form.appendChild(element2);
    form.submit();
}
于 2012-10-21T20:32:59.477 に答える
2

Saurabh Chauhanの応答を行うこともできますが、ボディに動的要素を追加する必要はありません。このソリューションはすべて動的なソリューションです。

    var myform = document.createElement("form");
    myform.action = "myForm.aspx";
    myform.method = "post";


    product = document.createElement("input");
    product.value = "value";
    product.name = "name";

    myform.appendChild(product);
    myform.submit();
于 2014-12-09T18:24:36.110 に答える
0

これを行うための関数を作成しました:

function PostDataRedirect(data, dataName, location) {
var form = document.createElement("form");

form.method = "POST";
form.action = location;

if (data.constructor === Array && dataName.constructor === Array) {
    for (var i = 0; i < data.length; i++) {
        var element = document.createElement("input");
        element.type = "hidden";
        element.value = data[i];
        element.name = dataName[i];
        form.appendChild(element);
    }
} else {
    var element1 = document.createElement("input");
    element1.type = "hidden";
    element1.value = data;
    element1.name = dataName;
    form.appendChild(element1);
}

document.body.appendChild(form);

form.submit(); 
}

質問の使用法:

PostDataRedirect([ un, pw ], ["un", "pw"], "login.php");
于 2017-02-06T16:31:50.167 に答える