将值从html表单传递给php而不提交表单

时间:2011-05-19 21:31:00

标签: php html

我有一个文本框。我想从那里获取用户输入并将其传递给PHP而不使用提交按钮。我更喜欢普通的按钮,onclick应该将数据传递给PHP。

我听到的是:

  • 您可以调用JS函数onclick,然后您可以提交表单 从那里

但我希望在提交表格后能够在同一页面上。这就是为什么我不想首先提交表格。但看起来没有别的办法。

如果有人知道提交方法,请帮助。

5 个答案:

答案 0 :(得分:10)

是的,它被称为AJAX。 :)

在jQuery中,为简洁起见:

// or $('#textbox_autopost').blur if you want to do it when the box loses focus
$('#textbox_autopost').change(function(){
    $.ajax({
        type: "POST",
        url: "some.php",
       data: {text:$(this).val()}
    });
});

如果您想通过按钮点击

来完成
<button id="inlinesubmit_button" type="button">submit</submit>

$('#inlinesubmit_button').click(function(){
    $.ajax({
        type: "POST",
        url: "some.php",
       data: {text:$('#textbox').val()}
    });
});

你也可以通过A HREF(或提交按钮,或者其他古怪的东西来做到这一点:

<!-- backup if JS not available -->
<a href="handler.php" id="inline_submit_a">add comment</a>

$('#inline_submit_a').click(function(evt){
    $.ajax({
        type: "POST",
        url: "some.php",
       data: {text:$('#textbox').val()}
    });
    evt.preventDefault();
    return false;
});

如果你想输入:

$('#textbox_autopost_onenter').keydown(function(evt){
    if ((evt.keyCode) && (evt.keyCode == 13))
    {
      $.ajax({
        type: "POST",
        url: "some.php",
        data: {text:$(this).val()}
      });
      evt.preventDefault();
      return false;
    }
});

最终,网站就绪代码:

$(document).ready(function(){
   function submitMe(selector)
   {
        $.ajax({
          type: "POST",
          url: "some.php",
          data: {text:$(selector).val()}
        });

   }
   $('#textbox_button').click(function(){
      submitMe('#textbox');
   });
   $('#textbox').keydown(function(evt){
      if ((evt.keyCode) &&(evt.keyCode == 13))
      {
         submitMe('#textbox');
         evt.preventDefault();
         return false;
      }
   });

答案 1 :(得分:3)

您需要使用Javascript将AJAX POST请求发回服务器上的PHP。

有一个很好的教程here,它使用jQuery来验证表单,将其发送到服务器,然后根据服务器的响应向用户显示一条消息。

答案 2 :(得分:2)

你必须使用AJAX。

我强烈建议使用jquery:)

jQuery

答案 3 :(得分:2)

有几种方法可以做到这一点......

听起来你是在追求非重定向解决方案,所以我推荐jQuery(这是我最喜欢的,但还有很多其他解决方案来实现AJAX)并做了类似以下的事情:

假设您有一个文本框和按钮,如下所示:

<input id="txt_input" type="text" />
<input id="btn_send" type="button" value="Submit" />

然后做这样的事情

$(document).ready(function () {
    $("#btn_send").click(function () {

        // Do stuff BEFORE sending... //
        callAFunction();
        var test = "asdfasdf";

        // Send the text to PHP //
        $.post("test.php", { input: $("#txt_input").val()},
             function(data) {
                 alert("test.php returned: " + data);
             }
        );

        // Do more stuff after sending.... //
        callAnotherFunction();
    });
});

我相信你会得到你的追求。有关jQuery以及$ .post的更多选项的更多信息,请点击此处:http://api.jquery.com/jQuery.post/

希望有所帮助!

答案 4 :(得分:1)

我不确定“普通按钮”的含义,但如果您不想使用<input type="submit">,则可以使用<button type="submit">

button为您提供了更大的布局自由,但如果您在一个页面中使用多个button元素,则旧版本的IE会感到困惑。