2012-06-26 119 views
1

想知道是否有人可以幫助我。我幾乎沒有使用Ajax的知識,並且在嘗試將我的User1_id和Text傳遞給我的insert.php之後,我沒有將我想要的數據插入到數據庫中。通過Ajax從表單傳遞數據

由於我的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 /數據部分。

$("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; 
}); 

但是不知道該怎麼去做。

任何指導表示讚賞。不要求任何人爲我寫代碼。但歡迎好的方向。

謝謝。

回答

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方法,因爲我覺得它保證器和順利傳遞更多信息。 再次感謝。

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的更改標識,它同樣給你formid和id必須是唯一的, 所以改變你的textarea id,你可以嘗試傳遞數據爲:

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

我改變建議。當我提交時,它告訴我在Firefox中。「這個用戶不存在」,然後註銷我,看起來它沒有將user1_id傳遞給insert.php頁面。這就是我要找的。 – dave

+0

將名稱添加到您已添加userId作爲值的隱藏輸入字段中,並從PHP端獲取它 –

+0

仍會引發相同的錯誤。 ajax沒有傳遞用戶的ID,所以我必須更改數據字段來傳遞它? – dave