【问题标题】:Passing Data from form with Ajax使用 Ajax 从表单传递数据
【发布时间】:2012-06-27 17:09:31
【问题描述】:

想知道是否有人可以帮助我。我对 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>

插入.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;
});

但不知道该怎么做。

感谢任何指导。不要求任何人为我编写代码。但欢迎好的方向。

谢谢。

【问题讨论】:

    标签: php html ajax database forms


    【解决方案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(),
            ......
    

    【讨论】:

    • 我按照建议进行了更改。当我提交时,它在 Firefox 中告诉我..“此用户不存在”然后将我注销,看起来它没有将 user1_id 传递到 insert.php 页面..这就是我正在寻找的。
    • 将名称添加到您已为其添加 userId 作为值的隐藏输入字段,并从 PHP 端获取它
    • 仍然抛出同样的错误。 ajax 没有传递用户的 id,所以我必须更改 DATA 字段才能传递它吗?
    • 你不能有相同的 id,你的表单和 textarea 字段使用相同的 id,所以更改你的 textarea 的 id ...并且你从会话中获取 user_id,所以这不是问题ajax代码
    • 这是我的输出,但它仍然不断输出该用户不存在的相同错误。一定是别的东西。 Mysite.com/profile.php?user1_id=6&status=dddd&Submit=Submit
    【解决方案2】:

    只想对你们俩的时间和帮助表示感谢。我重新编写了代码,现在可以正常工作了。

    这是最终代码 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>
    

    插入.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 方法,因为我觉得它更安全并且可以顺利传递更多信息。 再次感谢。

    【讨论】:

      猜你喜欢
      • 2016-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多