0

我想“推迟”(停止表单的默认行为)将用户发送到“http://www.othersite.com”,直到在 check.php 上完成服务器端验证

完成后,将用户发送到“http://www.othersite.com”。我可以发送到验证页面没问题,但我需要验证然后发送到另一个网站。说我有这样的表格

$(document).ready(function(){
$('#sendbutton').click(function(){
$('#error').empty();
$('#send').ajaxForm(function (data, textStatus) {
$('#error').append(data);
});
});
});

<form id="send" name="send" method="post" action="http://www.othersite.com/index.htm">
<input type="text" id="fname" name="fname" />
<input type="text" id="lname" name="lname" />
<input type="text" id="address" name="address" />
<input type="text" id="city" name="city" />
<input type="text" id="state" name="state" />
<button id="sendbutton">Submit</button>
</form>
<div id="error"></div>

并且服务器端验证发生在 check.php

check field inputs here on check.php
if not correct
echo error message

if successful echo "validation_ok"

如果返回的数据是“validation_ok”,则发送用户在“http://www.othersite.com”上完成表单提交

4

2 回答 2

0
$(document).ready(function() {
    $('#send').submit(function() {
        $('#error').empty();
        // Post the form to your validation page
        $.post('/check.php', $(this).serialize(), function (data) {
            // If validation failed, stop submission
            if (data != 'validation_ok') {
                $('#error').append(data);
                // Prevent submission.
                return false;
            }
        });
    });
});
于 2012-05-21T00:00:15.107 回答
0

听起来像是 AJAX 的绝佳机会(正如 @nachito 所暗示的那样)。否则,您还可以:

  1. 最初check.php呈现表单并进行客户端验证。
  2. 使表单的操作check.php(有效地回发到自身)。
  3. 成功验证后,将表单的操作设置为www.othersite.com并回显一个标记“自动提交”的 javascript 文字值(或隐藏输入,如果您愿意的话)。
    • 您还可以使用 jQuery 来更改表单的操作,而不是将其翻转为check.php.
  4. 检测到标志后,提交有关document.ready事件的表单。

如果做不到这一点,如果服务器端验证已通过使用(并且没有,只需谷歌“来自 PHP 的 HTTP POST,没有 cURL ”),您也可以check.php发布到。www.othersite.comcURL

于 2012-05-21T00:13:28.343 回答