2015-02-06 98 views
0

我正在使用JQuery和Ajax但是正在顯示一個錯誤"Notice: Undefined index: status in C:\xampp\htdocs\deadline\data.php on line 5"這是我的代碼行"$var = $_POST['status']; "JQuery/AJAX腳本不發送數據到php文件?

我的系統的工作原理,你必須登錄後一個問題(使用會話)問題/狀態發佈系統但是問題是我的JQuery/AJAX腳本作爲我在homepage.php的數據沒有被髮送到data.php(從我的理解,這就是爲什麼我的索引狀態未定義)。

我的代碼

<?php 
 
    include("connection.php"); 
 

 
    session_start(); 
 

 
    if(isset($_SESSION['user_id']) && $_SESSION['user_id'] != "") { 
 
    \t \t 
 
    \t } 
 

 
    \t else { 
 

 
    \t \t header("location:login.php"); 
 
    \t } 
 

 
    $sid = $_SESSION['user_id']; 
 

 
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
 

 
    $sql = "SELECT * FROM `users` WHERE id='{$sid}'"; 
 

 
    $query = $conn->query($sql); 
 

 
    $result = $query->fetch_assoc(); 
 

 
    $fname = $result['fname']; 
 

 
    $lname = $result['lname']; 
 

 
    $time = time(); 
 

 
    ?> 
 

 
    <html> 
 
    <head> 
 

 
    <script type="text/javascript" src="jquery.js"></script> 
 

 
    <script type="text/javascript"> 
 

 
    //daddy code 
 
    $ (document).ready(function() { 
 

 
    //mama code 
 
    $("button#postbutton").click(function() { 
 
    //children code 
 
    var status = $("textarea#status").value(); 
 

 
    if(status == "") { 
 
    \t return false; 
 
    } 
 

 
    var data = 'status='+status; 
 

 
    $.ajax({ 
 

 
    type: "POST", 
 

 
    url: "data.php", 
 

 
    data: data, 
 

 
    success: function(data) { 
 

 
    $("#statustext").html(data); 
 

 
    } 
 

 
    }); 
 

 

 
    }); 
 

 
    }); 
 

 
    </script> 
 
    </head> 
 

 
    <body> 
 

 

 
    <div id="global"> 
 

 
    <form action="" onsubmit="return false"> 
 

 
    <textarea id="status"></textarea> 
 

 

 
    <button id="postbutton">POST</button> 
 

 
    <a href="logout.php">LOGOUT</a> 
 

 
    </form> 
 

 
    <br/> 
 
    <br/> 
 

 

 
    <div id="allstatus"> 
 

 

 

 
    <!-- SKELETON --> 
 

 

 
    <div id="status"> 
 

 

 
    <div id="statuspic"> 
 
    </div> 
 

 

 
    <div id="statusinfo"> 
 

 
    <div id="statusname">JOnathan</div> 
 
    <div id="statustext"> this is the question</div> 
 
    <div id="statusoption"><button id="likestatus">LIKE</button></div> 
 
    <div id="statusoption"><button id="commentstatus">COMMENT</button></div> 
 
    <div id="statusoption"><button id="sharestatus">SHARE</button></div> 
 
    <div id="statusoption"><button id="statustime">TIME</button></div> 
 

 
    </div> 
 

 
    </div> \t 
 

 
    <!-- SKELETON --> 
 

 
    </div> 
 

 
    </div> 
 

 
    </body> 
 

 
    </html>


          
  
<?php 
 

 
    $var = $_POST['status']; 
 

 
    const DB_HOST = 'localhost'; 
 
    const DB_USER = 'root'; 
 
    const DB_PASS = ''; 
 
    const DB_NAME = 'forum'; 
 
    //connecting 
 

 
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
 

 
    if($conn->connect_error) { 
 
    \t die("Connection Failed: " . $conn->connect_error); 
 
    } else { 
 

 
    echo " success"; 
 

 
    } 
 

 

 
    $sql = "INSERT INTO `question`(id, question) VALUES ('', '{$var}')"; 
 

 
    $result = $conn->query($sql); 
 

 
    if($result) { 
 

 
    \t echo "inserted successfuly"; 
 
    } 
 
    else { 
 

 
     \t echo "failed: " . $conn->error; 
 
    } 
 

 

 
    echo " the text: " .$var. " has been added to database."; 
 

 

 
    ?>

如何它應該工作

我想使用jQuery/AJAX我homepage.php送數據到data.php,該數據將返回到homepage.php。成功顯示在我的div #statustext中。

含義當我在textarea輸入字段中寫入問題時,數據被存儲在數據庫中,並被檢索並顯示在瀏覽器的div中。 請幫我感謝..

+0

要以哪種方式發佈數據? – 2015-02-06 05:00:37

+0

使用post方法。我在我發佈的第一個代碼片段(這是homepage.php)中編寫JQuery代碼的方式。 – 2015-02-06 05:03:41

+0

這不是將數據發送到POST方法的方式。 – 2015-02-06 05:05:56

回答

2

你應該改變你的腳本,如下所示。阿賈克斯將數據發送到URL以連載的方式或者你在使用的形式連載,這將發送所有的Fileds信息到你的php URL如果您只發送一個字段的值,那麼你可以做到這一點改變其他明智

<script type="text/javascript"> 
    //daddy code 
    $ (document).ready(function() { 
     //mama code 
     $("button#postbutton").click(function() { 
      //children code 
      var status = $("textarea#status").value(); 
      if(status == "") { 
       return false; 
      } 
      var data = {'status='+status}; 
      $.ajax({ 
       type: "POST", 
       url: "data.php", 
       data: data, 
       success: function(data) { 
        $("#statustext").html(data); 
       } 
      }); 
     }); 
    }); 
</script> 
1

POST使用name,而不是id所以改變這樣的:

<textarea id="status"></textarea> 

要這樣:

<textarea name="status"></textarea> 

對於數據確保它是爲您的表單中的數據,並添加method="post",以便它可以發送POST數據。例如,如果你給你的形式yourForm一個id:

HTML

<form action="" method="post" id="yourForm" onsubmit="return false"> 

JS

$.ajax({ 
    ... 
    data: $("#yourForm").serialize(), 
    ... 
}); 
+0

對不起,我的意思是我想發佈它沒有php,我以爲我是這樣做的正確方式,因爲我想通過ajax發佈數據。這就是爲什麼我有onsubmit =「返回false」? – 2015-02-06 05:06:43

+0

@LinDanChongWei AJAX使用PHP和POST數據。我並不是說你需要提交表單,而是從AJAX調用中獲取表單中的信息。 – 2015-02-06 05:08:27

+0

我仍然收到通知:Undefined index:status in .... – 2015-02-06 05:24:23

1

首先,使用.val()沒有.value()當你得到你的信息的價值。第二個錯誤 - 使用兩個id = "sattus"。元素的ID必須是唯一的,或使用class = ""來識別您的元素類。

1

不要給同一個id多一個html元素!

在您的代碼:

<textarea id="status"></textarea> 

<div id="status"> 

都包含相同的ID!請先糾正它。另外,在你的代碼中,斯賓塞在他的回答中提到,添加名稱屬性值「status」。毫無疑問,當你使用jQuery選擇器時,它應該選擇正確的一個,儘管你可以在使用AJAX發送請求之前提醒它。

也設置數據變量爲var data = {status : status};