我目前有这个:
function submit()
{
document.getElementById("lostpasswordform").click(); // Simulates button click
document.lostpasswordform.submit(); // Submits the form without the button
}
<body onload="submit()">
<form name="lostpasswordform" id="lostpasswordform" action="/" method="post">
<input type="hidden" name="user_login" id="user_login" class="input" value="<?php echo ($user_login); ?>" />
</form>
</body>
它适用于PC,但出于某种原因,javascript不是从iPhone执行的,所以我想知道是否有一种方法可以使用PHP而不是JS来自动提交表单?
由于
答案 0 :(得分:2)
无法触发表单提交服务器端。你必须使用一种在DOM中运行的语言,就像JavaScript一样。根据你给我们的内容,我不明白为什么它不会以你现在设置的方式工作。
检查您的代码,如果它仍然不起作用,我建议在不同的背景下提出这个问题;让你的JavaScript在iPhone上运行而不是完全抛弃它的一些东西。
答案 1 :(得分:0)
正如esqew指出的那样,您无法从服务器执行客户端操作。您的选择是重做您的功能,因此它不需要自动提交(也许您可以使用GET变量而不是发布)或找到适合iPhone的解决方法。
要获得解决方法,.click()
功能在iPhone上无效。您可以尝试使用tap
或更大的touch handler function来解决此问题之一的解决方案。
答案 2 :(得分:0)
不,PHP无法做到这一点,但问题在于iPhone处理点击事件的方式。这是background info and a workaround。看起来你只需要一个空的onclick函数来触发它,所以:
// untested
var f = document.getElementById('lostpasswordform');
f.onclick = function () { };
document.lostpasswordform.submit();
您可能想要考虑用户的体验 - 为什么在表单内点击会自动提交表单?提交按钮出了什么问题?
答案 3 :(得分:0)
这是来自像我这样的PHP程序员的最小javascript答案:
/** This is the script that will redraw current screen and submit to bank. */
echo '<script>'."\n" ;
echo 'function serverNotifySelected()'."\n" ;
echo '{'."\n" ;
echo ' window.open(\'\', \'BankPaymentScreen\');'."\n" ;
echo ' document.forms[\'bank_form\'].submit();'."\n" ;
echo ' document.forms[\'server_responder\'].submit();'."\n" ;
echo '}'."\n" ;
echo '</script>'."\n" ;
/** This form will be opened in a new window called BankPaymentScreen. */
echo '<form action="https://www.sandbox.bank.com/cgi-bin/webscr" name="bank_form" method="post" target="BankPaymentScreen">'."\n" ;
echo '<input type="hidden" name="cmd" value="_s-xclick">'."\n" ;
echo '<input type="hidden" name="custom" value="'.$transaction_start.'">'."\n" ;
echo '<input type="hidden" name="hosted_button_id" value="'.$single_product->hosted_button_id.'">'."\n" ;
echo '<table>'."\n" ;
echo ' <tr>'."\n";
echo ' <td><input type="hidden" name="'.$single_product->hide_name_a.'" value="'.$single_product->hide_value_a.'">Local</td>'."\n" ;
echo ' </tr>'."\n" ;
echo ' <tr>'."\n" ;
echo ' <td>'."\n" ;
echo ' <input type="hidden" name="'.$single_product->hide_name_b.'" value="'.$single_product->hide_value_b.'" />'.$single_product->short_desc.' $'.$adj_price.' USD'."\n" ;
echo ' </td>'."\n" ;
echo ' </tr>'."\n" ;
echo '</table>'."\n" ;
echo '<input type="hidden" name="currency_code" value="USD">'."\n" ;
echo '</form>'."\n" ;
/** This form will redraw the current page for approval. */
echo '<form action="ProductApprove.php" name="server_responder" method="post" target="_top">'."\n" ;
echo '<input type="hidden" name="trans" value="'.$transaction_start.'">'."\n" ;
echo '<input type="hidden" name="prod_id" value="'.$this->product_id.'">'."\n" ;
echo '</form>'."\n" ;
/** No form here just an input and a button. onClick will handle all the forms */
echo '<input type="image" src="https://www.sandbox.bank.com/en_US/i/btn/btn_purchaseimmediateCC_LG.gif" border="0" alt="This Bank - The safer, easier way to pay!" onclick="serverNotifySelected()">'."\n" ;
echo '<img alt="" border="0" src="https://www.sandbox.bank.com/en_US/i/scr/pixel.gif" width="1" height="1">'."\n" ;
这是一个按钮的代码。该按钮将重新绘制当前页面以从购买到预批准,并打开一个新窗口,重新关注新窗口并将新的焦点窗口传递给支付提供商。
这也可以防止Chrome阻止新网页获得焦点。
答案 4 :(得分:0)
你可以这样做。
有一个例子,如何,甚至你可以使用cURL
来做到这一点<?php
//create array of data to be posted
$post_data['firstName'] = 'Name';
$post_data['action'] = 'Register';
//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('www.domainname.com', 80);
//sending the data
fputs($connection, "POST /target_url.php HTTP/1.1\r\n");
fputs($connection, "Host: www.domainname.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);
?>