1

誰かが私を助けることができるかどうか疑問に思います。私は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;
});

しかし、それについてどうやって行くのかわからない。

どんな指導も大歓迎です。誰かに私のためにコードを書くように頼まないでください。しかし、良い方向性は歓迎されます。

ありがとう。

4

2 に答える 2

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(),
        ......
于 2012-06-26T11:34:42.660 に答える
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();
} 


?> 

GET メソッドの代わりに post を使用することにしました。より安全で、より多くの情報をスムーズに渡すことができると感じたからです。再度、感謝します。

于 2012-06-26T23:25:20.550 に答える