需要使用jquery提交此表单的帮助。。。它正在提交,但整个浏览器正在刷新

需要使用jquery提交此表单的帮助。。。它正在提交,但整个浏览器正在刷新,jquery,Jquery,在输入标记中使用type=button而不是type=submit。 因为“提交”按钮将提交表单并刷新页面。我认为如果不使用type=submit刷新页面,则无法提交表单。而是使用type=submit使用type=button您可以这样做。。。假设这是您的html $idc = $_GET['id']; $name1 = $_GET['name']; $id2 = $_GET['ids']; if ($_POST['message_field'] != ""){

在输入标记中使用type=button而不是type=submit。
因为“提交”按钮将提交表单并刷新页面。

我认为如果不使用type=submit刷新页面,则无法提交表单。而是使用type=submit使用type=button

您可以这样做。。。假设这是您的html

 $idc = $_GET['id'];
    $name1 = $_GET['name'];
    $id2 = $_GET['ids'];
     if ($_POST['message_field'] != ""){
        $message_field = $_POST['message_field'];

          $sql = mysql_query("INSERT INTO comment (mem_id,commented_men_id, message, message_date) 
         VALUES('$userid','$idc','$message_field', now())")  
         or die (mysql_error());

    }

        $sql_message = mysql_query("SELECT id, mem_id ,message, message_date FROM comment WHERE mem_id='$userid'  ORDER BY message_date DESC");

        while($row = mysql_fetch_array($sql_message)){


            $id = $row["id"];
            $me_id = $row["mem_id"];
            $json = $row["message"];
                 $message_date = $row["message_date"];
                $message = json_encode($json);

 $sql_mem_data = mysql_query("SELECT id, name FROM users WHERE  id='$me_id'");
              while($row2 = mysql_fetch_array($sql_mem_data)){
                $id = $row2["id"];
                $ufirstname = $row2["name"];
        }

    $messageList .= '<div id="only"><p>' . ufirstname . '</p><br/><p    id="pmessage">'.$the_message.'</p></div>';

    }

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title> Book</title>
    <link rel="stylesheet" href="style/style.css" type="text/css" media="screen" />
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="jquery.form.js"></script>
    <script type="text/javascript" src="mootools-core-1.3.2-full-compat.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){

       $("#messageinput").click(function() {
           $.post($('#message').attr("action"),
                  $("#message").serialize(),
                  function(html) {
                    var comment = $(html) .find('#messageoutput').html();
                      $("#pmessage").html(comment);
              });
   });
       });

    </script>
         <div id="messageid">
             <form align="left" id="message" action="<?php profile.php?id='.$idc.'& ids='.    $id2.'&name='.$name1.'?>" method="post" enctype="multipart/form-data" name="blab_from">
        <textarea name="message_field" rows="3" style="width:97%;"></textarea>
         <input id="messageinput" name="submit" type="button" value="submit" align="left" />
        </form>
        </div>
        <div id="messageoutput"><?php print "$messageList"; ?></div>
修改脚本的解决方案

使用窗体上的事件,而不是单击

<?php
//engine.php
//for convinence sake split the php and html into 2 files say php is in engine.php and html in profile.php
//why are you using &name and &ids for? my best guess is u need only &id and &message_field if its a msg post

//this file will do 2 things when id is passed return the comments and when id and message is passed insert the comment into db fetch it again and pass it.
//the html manipulation will be done by jQuery/javascript only you dont need php for that

//  $idc = $_GET['id'];
//  $name1 = $_GET['name'];
//  $id2 = $_GET['ids'];

    $idc = $_POST['id'];//[we are using post so use _POST methods]


    if ($_POST['message_field'] != "")
    {
        //here you are missing connection statements like mysql_connect() and mysql_select_db()
        $message_field = $_POST['message_field'];
        $sql = mysql_query("INSERT INTO comment (mem_id,commented_men_id, message, message_date)VALUES('$userid','$idc','$message_field', now())") or die (mysql_error());  
    }

    $sql_message = mysql_query("SELECT id, mem_id ,message, message_date FROM comment WHERE mem_id='$userid'  ORDER BY message_date DESC");

    $i = 0;
    $messageList = '<div id="result">';
    while($row = mysql_fetch_array($sql_message))
    {
        $j=$i++;
        $id = $row["id"];
        $me_id = $row["mem_id"];        
        $message_date = $row["message_date"];
        //$json = $row["message"];
        //$message = json_encode($json);
        $message = $row["message"]; //disabling json for now

        $sql_mem_data = mysql_query("SELECT id, name FROM users WHERE  id='$me_id'");

        while($row2 = mysql_fetch_array($sql_mem_data))
        {
            $id = $row2["id"];
            $ufirstname = $row2["name"];
        }
        //$messageList .= '<div id="only"><p>' . ufirstname . '</p><br/><p    id="pmessage">'.$the_message.'</p></div>'; //[error 1] ur writting this outside while loop also id="only" multiple times will create error same with id="pmessage"
        /*[error 1] rectification*/ $messageList .= '<div id="row_'.$j.'"><p id="uname_'.$j.'">'.$ufirstname.'</p><br/><p id="msg_'.$j.'">'.$message.'</p></div>';
    }
    $messageList .= '</div>'; //making id="result" parent of all the rows
    echo $messageList; //script has to echo for jQuery to catch it.
?>
<!--This file is profile.php(assumption)-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> Book</title>
<link rel="stylesheet" href="style/style.css" type="text/css" media="screen" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
<script type="text/javascript" src="mootools-core-1.3.2-full-compat.js"></script>
<script type="text/javascript">
$(document).ready(function(){
/*i still didn't get why you use $id2 and &name2 but the above php block is used to only fetch data which is passed by the javascript
so you need 2 events first when the page is loaded and 2nd when the page is posted with a new comment
*/
(function($)
{
    $.getParam = function(key)
    {
        var urlParams = decodeURI( window.location.search.substring(1) );
        if(urlParams == false | urlParams == '') return null;
        var pairs = urlParams.split("&");

        var keyValue_Collection = {};
        for(var value in pairs)
        {
            var equalsignPosition = pairs[value].indexOf("=");
            if (equalsignPosition == -1) 
                keyValue_Collection[ pairs[value] ] = ''; 
            else
                keyValue_Collection[ pairs[value].substring(0, equalsignPosition) ] = pairs[value].substr(equalsignPosition + 1);
        }
        return keyValue_Collection[key];
    }
})
(jQuery);

//fetch the id to get the messages
var id = $.getParam("id");

//if its a click
$("#messageinput").live('click',function(){
    var msg = $("#message_field").val();
    var qstring='id='+id+'&message_field='+ msg;
    $.post('engine.php',qstring,function(data){
        $("#messageoutput").html(data);//bind the whole data to messageoutput div as its already formatted for right html
    });
});

//else load default messages
var qstring = 'id='+id;
$.post('engine.php',qstring,function(){
    $("#messageoutput").html(data);//in this php script will return only the messages for the passed id.
});

});
</script>
<div id="messageid">
    <form align="left" id="message" action="" method="post" enctype="multipart/form-data" name="blab_from">
    <textarea id="message_field" name="message_field" rows="3" style="width:97%;"></textarea>
    <input id="messageinput" name="submit" type="button" value="submit" align="left" />
    </form>
</div>
<!--<div id="messageoutput"><?php/* print "$messageList"; */?></div>--> <!--This is not needed when u do it by AJAX simply put an empty div for results-->
<div id="messageoutput"></div>

它不会正常提交,但会刷新浏览器,我只想在不刷新的情况下提交评论。你有任何输入或脚本可以这样做吗?你见过使用表单插件的吗错误:表单元素的名称或id不能为submit。使用上面的现有jquery代码并更改为type=button,表单现在将不会插入。这可能是什么?我没有看到应该位于$document.ready上方的开始脚本标记。输入错误?嘿,karthi,我在原始文档中确实有它,请原谅我的输入错误。嘿,karthi,它可能正在插入,但它不会像ajax类型一样返回到站点,在那里它将只刷新注释。而不必对整个site@fello,将表单id更改为form1或除“form”之外的任何其他,然后尝试使用submit/button输入类型。使用上面的现有jquery代码并更改为type=button,表单现在将不会插入。这可能是什么?是的,您必须在$'.button.中使用$.post或$.ajax发送请求。单击函数。这与submit不同,如果您将submit更改为按钮,则任何禁用JavaScript的人都无法获得表单功能。这是可行的,但在操作中我使用了一些php全局变量,现在我不知道如何将其放在帖子中?我只把html.php放在消息lol中返回整个页面,我需要html.php?id='.$idc.&id='$id2。“&name=”。$name1。“我可以将此字符串放入jquery中吗?它将调用它?您可以通过以下代码var mydata=$data.filter'requireddata'过滤返回的数据;其中“requireddata”是返回u数据的选择器。假设要将返回的数据放入结果中,然后是$result.htmlmydata;如果您想放置额外的数据,$.post类似于$.post'html.php','id='.$idc.&id='$id2'&name='.$name1',functiondata{//other code}简而言之,第二个参数构建您通过查询字符串发送的内容。不要将页面名称放在第二个参数中,将变量放在第一个参数中argument@fello你找到解决方案了吗?我还没有找到解决方案,lonewolf,不知怎么的,变量没有传递,表单也没有在表中提交注释。
$(document).ready(function(){
    $("#messageinput").click(function(){
        $.post('html.php',$("#form1").serialize(),function(data){
            $("#result").html(data);
        });

    });
});
<?php
//engine.php
//for convinence sake split the php and html into 2 files say php is in engine.php and html in profile.php
//why are you using &name and &ids for? my best guess is u need only &id and &message_field if its a msg post

//this file will do 2 things when id is passed return the comments and when id and message is passed insert the comment into db fetch it again and pass it.
//the html manipulation will be done by jQuery/javascript only you dont need php for that

//  $idc = $_GET['id'];
//  $name1 = $_GET['name'];
//  $id2 = $_GET['ids'];

    $idc = $_POST['id'];//[we are using post so use _POST methods]


    if ($_POST['message_field'] != "")
    {
        //here you are missing connection statements like mysql_connect() and mysql_select_db()
        $message_field = $_POST['message_field'];
        $sql = mysql_query("INSERT INTO comment (mem_id,commented_men_id, message, message_date)VALUES('$userid','$idc','$message_field', now())") or die (mysql_error());  
    }

    $sql_message = mysql_query("SELECT id, mem_id ,message, message_date FROM comment WHERE mem_id='$userid'  ORDER BY message_date DESC");

    $i = 0;
    $messageList = '<div id="result">';
    while($row = mysql_fetch_array($sql_message))
    {
        $j=$i++;
        $id = $row["id"];
        $me_id = $row["mem_id"];        
        $message_date = $row["message_date"];
        //$json = $row["message"];
        //$message = json_encode($json);
        $message = $row["message"]; //disabling json for now

        $sql_mem_data = mysql_query("SELECT id, name FROM users WHERE  id='$me_id'");

        while($row2 = mysql_fetch_array($sql_mem_data))
        {
            $id = $row2["id"];
            $ufirstname = $row2["name"];
        }
        //$messageList .= '<div id="only"><p>' . ufirstname . '</p><br/><p    id="pmessage">'.$the_message.'</p></div>'; //[error 1] ur writting this outside while loop also id="only" multiple times will create error same with id="pmessage"
        /*[error 1] rectification*/ $messageList .= '<div id="row_'.$j.'"><p id="uname_'.$j.'">'.$ufirstname.'</p><br/><p id="msg_'.$j.'">'.$message.'</p></div>';
    }
    $messageList .= '</div>'; //making id="result" parent of all the rows
    echo $messageList; //script has to echo for jQuery to catch it.
?>
<!--This file is profile.php(assumption)-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> Book</title>
<link rel="stylesheet" href="style/style.css" type="text/css" media="screen" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
<script type="text/javascript" src="mootools-core-1.3.2-full-compat.js"></script>
<script type="text/javascript">
$(document).ready(function(){
/*i still didn't get why you use $id2 and &name2 but the above php block is used to only fetch data which is passed by the javascript
so you need 2 events first when the page is loaded and 2nd when the page is posted with a new comment
*/
(function($)
{
    $.getParam = function(key)
    {
        var urlParams = decodeURI( window.location.search.substring(1) );
        if(urlParams == false | urlParams == '') return null;
        var pairs = urlParams.split("&");

        var keyValue_Collection = {};
        for(var value in pairs)
        {
            var equalsignPosition = pairs[value].indexOf("=");
            if (equalsignPosition == -1) 
                keyValue_Collection[ pairs[value] ] = ''; 
            else
                keyValue_Collection[ pairs[value].substring(0, equalsignPosition) ] = pairs[value].substr(equalsignPosition + 1);
        }
        return keyValue_Collection[key];
    }
})
(jQuery);

//fetch the id to get the messages
var id = $.getParam("id");

//if its a click
$("#messageinput").live('click',function(){
    var msg = $("#message_field").val();
    var qstring='id='+id+'&message_field='+ msg;
    $.post('engine.php',qstring,function(data){
        $("#messageoutput").html(data);//bind the whole data to messageoutput div as its already formatted for right html
    });
});

//else load default messages
var qstring = 'id='+id;
$.post('engine.php',qstring,function(){
    $("#messageoutput").html(data);//in this php script will return only the messages for the passed id.
});

});
</script>
<div id="messageid">
    <form align="left" id="message" action="" method="post" enctype="multipart/form-data" name="blab_from">
    <textarea id="message_field" name="message_field" rows="3" style="width:97%;"></textarea>
    <input id="messageinput" name="submit" type="button" value="submit" align="left" />
    </form>
</div>
<!--<div id="messageoutput"><?php/* print "$messageList"; */?></div>--> <!--This is not needed when u do it by AJAX simply put an empty div for results-->
<div id="messageoutput"></div>
$('#submit).submit(function() {
  alert('Handler for .submit() called.');
  return false;
});