使用Ajax从表单传递数据

时间:2012-06-26 11:30:04

标签: php html ajax database forms

想知道是否有人可以帮助我。我几乎不了解Ajax,经过多次尝试将我的User1_id和Text传递给我的insert.php后,我没有运气将我想要的数据插入到我的数据库中。

正如我的profile.php和insert.php所示,表单提交到数据库,但是当用户提交表单时,它会导航到insert.php,而宁愿让Ajax发送数据并保留在Profile上。在任何时候都有PHP,我觉得在创建这样的函数时这是一个更好的方法。

我想知道是否有人可以指导我如何去做正确的方向。

Profile.php表格

<form id="FormId" action="" method="get">
    <input type="hidden" value="<? echo $user1_id ?>">
        <textarea placeholder="Whats New??" id="FormId" name="status"></textarea>
            <input type="submit" name="Submit" value="Submit">
            </form>

Insert.php

    <?
    session_start();
    ini_set('display_errors',1);
    error_reporting(E_ALL|E_STRICT);
    include "db_connect.php";
    if (isset($_GET['status']))  {
         $status = $_GET['status'];
    }
    $user1_id=$_SESSION['id'];



if ($_GET['status']) {
$query = mysql_query("INSERT INTO feed (status,user1_id) VALUES ('$status', '$user1_id')")  or die (mysql_error());
if($query){
    echo "Posted Into Database";
}

exit();
}
?> 

我知道我需要类似的东西..但我认为我更多地关注var / data部分。

$("form#myFormId").submit(function() {
    var mydata = $("form#myFormId").serialize();
    alert(mydata); // it's only for test
    $.ajax({
        type: "GET",
        url: "insert.php",
        data: mydata,
        success: function(response, textStatus, xhr) {
            alert("success");
        },
        error: function(xhr, textStatus, errorThrown) {
            alert("error");
        }
    });
    return false;
});

但不知道如何去做。

任何指导表示赞赏。不要求任何人为我编写代码。但欢迎良好的方向。

感谢。

2 个答案:

答案 0 :(得分:1)

将您的ajax部分更改为:

$("form#myFormId").submit(function(e) {
  e.preventDefault();  //prevent default submit
  ........

您的隐藏输入应具有名称

<input name="userId" type="hidden" value="<? echo $user1_id ?>">

在php中,

$userId = $_GET["userId"];

更改textarea的ID,与您的formid相同,ID必须是唯一的, 所以改变你的textarea id,你可以尝试传递数据:

$.ajax({
        type: "GET",
        url: "insert.php",
        data:"status="+$("#yourTextareaId").val()+"&userId="+$("#yourHiddenInputId").val(),
        ......

答案 1 :(得分:0)

就像感谢你们的时间和帮助一样。我重新编写代码,现在让它工作了。

这是最终的代码 PROFILE.PHP / JS

<script type="text/javascript">

function createstatus(content){
$.post("insert.php", { user1_id: content } );
refreshstream();
}

function createwallpost(content,user1_id){

$.ajax({
   type: "POST",
   url: "insert.php",
   data: "status="+content+"&user1_id="+user1_id,
   success: function(){
     document.location = document.location;
   }
 });

}
</script>

    <form action="insert.php" method="POST" target="ifr1" class="form_statusinput">
        <input type="hidden" name="user1_id" value="<?php echo $user1_id ?>">
        <input type="text" name="status" id="status" class="homescreen_status_input" placeholder="Say something">
        <iframe name="ifr1" id="ifr1" style="display:none;"></iframe>
    </form>

INSERT.PHP

<?
session_start();
include "db_connect.php";
if (isset($_POST['status']))  {
     $status = $_POST['status'];
}

$user1_id = $_POST['user1_id'];


if ($_POST['status']) {
$query = mysql_query("INSERT INTO feed (status,user1_id) VALUES ('$status', '$user1_id')")  or die (mysql_error());
if($query){
    echo "Posted Into Database";
}

exit();
} 


?> 

我决定使用post而不是GET方法,因为我觉得它更安全并且可以顺利传递更多信息。 再次感谢。

相关问题