2015-10-01 141 views
1

我試圖讓一個表單自動提交,其饋送到另一種形式的用戶名和密碼。自動提交表單

如果刪除了JavaScript和只需要在屏幕上顯示的形式,並手動單擊提交按鈕,結果是我得到自動記錄在結果頁面上。這是我想要的結果。

如果我留在原地的JavaScript,它實際上並不會自動登錄我在,但它確實在整個用戶名和密碼預填充結果頁面上通過,那麼我在結果頁中點擊提交。

我怎樣才能使自動提交相同的方式工作作爲用戶的形式實際上擊中提交按鈕?我也明白,這可能不是傳遞用戶名和密碼最安全的方式,但這是一個特殊的用例。

注:MyForm的是一個PHP頁面,和我提交到一個aspx頁面。

這裏是我的形式會是什麼樣代碼:

<form id='myForm' method='post' action='https://blah.com/Login.aspx'>"; 
<p>Username: <input value='usernameHere' name='Username' type='text' id='Username' data-index='0' maxlength='255' placeholder='Username' class='loginUsername' />"; 
<p>Password: <input value='passwordHere' name='Password' type='password' id='Password' placeholder='Password' />"; 
<p><input type='submit' name='btnSignIn' value='Sign In' id='btnSignIn' /> 
</form> 
<script type="text/javascript"> 
    document.getElementById('myForm').submit(); 
</script> 

謝謝。

+0

你以爲如何收集用戶名和密碼,然後提交表單? –

+0

aspx頁面檢查提交按鈕是否被點擊了嗎?如果您使用js提交表單,那麼提交按鈕的名稱 - >值是否會傳遞給aspx頁面? – Terminus

回答

3

我懷疑有在玩其他的問題,因爲使用JS提交表單應該複製原生瀏覽器提交。

您可以嘗試模擬點擊通過JavaScript '提交' 按鈕:

的JavaScript:

document.getElementById('btnSignIn').click(); 

的jQuery:

$('#btnSignIn').click(); 
+0

這完全解決了我的問題。 click()的行爲與submit()的行爲不同。點擊完美工作,我需要! – user3513237

2

可以使用onload方法的JavaScript

function submitForm() { 
    // **NOTE** set form values first 
    document.getElementById('myForm').submit(); 
} 
window.onload = submitForm; 

或者使用jQuery,如果你想:

$(function(){ 
    submitForm(); 
}); 

或標籤屬性

他典型的選項是使用onload事件:

<body onload="javascript:submitForm()"> 
    . 
    . 
+0

這並沒有解決我的問題。它工作並傳遞表單值,但它不提交我自動提交的表單。如果我拿出這個JavaScript,只顯示錶單,然後點擊提交它會自動提交輔助表單。 – user3513237

+0

你有沒有看到控制檯...?那裏有任何錯誤? –

+0

@ user3513237你有沒有看到任何erorr? –

0

隨着問題被認爲「通過PHP發佈形式」。它可以通過使用PHP的函數fsockopen()和fputs()將正確格式化的數據發送到遠程服務器來實現。這裏是一個代碼示例:

<?php 

//create array of data to be posted 
$post_data['Username'] = 'XYZ'; 
$post_data['Password'] = '********'; 
$post_data['btnSignIn']="Sign In"; 

//traverse array and prepare data for posting (key1=value1) 
foreach ($post_data as $key => $value) { 
    $post_items[] = $key . '=' . $value; 
} 

//create the final string to be posted using implode() 
$post_string = implode ('&', $post_items); 

//we also need to add a question mark at the beginning of the string 
$post_string = '?' . $post_string; 

//we are going to need the length of the data string 
$data_length = strlen($post_string); 

//let's open the connection 
$connection = fsockopen('https://blah.com', 80); 

//sending the data 
fputs($connection, "POST /Login.aspx HTTP/1.1\r\n"); 
fputs($connection, "Host: https://blah.com \r\n"); 
fputs($connection, 
    "Content-Type: application/x-www-form-urlencoded\r\n"); 
fputs($connection, "Content-Length: $data_length\r\n"); 
fputs($connection, "Connection: close\r\n\r\n"); 
fputs($connection, $post_string); 

//closing the connection 
fclose($connection); 

?> 

上面的代碼做現在發表您的形式得到重定向到該網頁,使用簡單

header('location :https://blah.com/Login.aspx '); 
+0

完全過分複雜的用戶問 –

+0

@sudosoul,因爲我認爲,他需要一個表格發佈數據,但自動..hmm? –