2017-03-20 1 views
1

私はすでにデータベースが設定されています。私は「削除」を押すのであればJavaScript、PHP、Bootstrap - モーダルから疑わしいエラー - PHPファイルがJavaScriptファイルから値を受け取ることができません。

Name of subject | Actions 
----------------------------------------- 
     Chemistry  | Edit/Delete 
     Algebra  | Edit/Delete 

javascript機能を取得します。私はまた、「キャッチ」ボタンが押されたためにその要素のid、このようなものがあること(JavaScriptで)機能を持っていますその対象のID、およびAJAXでリクエストを送信するには、このように:

function confirmationDeleteSubject(boton){ 

    var materiaId = parseInt(boton.value); 
    console.log(materiaId); 

    $.ajax({ 
    url: 'http://localhost/path/showSubject.php', 
    type: "POST", 
    data: {"materiaId": materiaId}, 
    dataType: "html", 
    beforeSend: function() {  
     console.log("Processing..."); 
    }, 
    success: function(data) { 
     if(data == "OK") { 
     //location.href = "http://localhost/path/main.php"; 
     return; 
     } 
     if(data == "ERROR") { 
     alert("error, please try again"); 
     return; 
     } 
     alert("Server message: " + data); 
    } 
    }); 
} 

あり、特定のIDのデータを取得を扱うphpファイルがあり、そしてモーダルでそれを表示しようとします。

<?php 

    include("conexionDatos.php"); 

    // Inicialization 
    $materiaId = ""; 

    // This receives the data from the JavaScript function 
    $materiaId = $_POST['materiaId']; 

    // Query to get the data for that id 
    $SQL = "SELECT m.id, m.name, m.description, m.hours, c.name AS carreer_name FROM subjects m JOIN carreers c ON (m.carreer_id = c.id) WHERE m.id = '$materiaId'"; 
    $result = $CONN->query($SQL); 

    // This part "inserts" into the table in the modal 
    if($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()){ 
     echo "<tr>"; 
     echo "<td>{$row['name']}</td>"; 
     echo "<td>{$row['description']}</td>"; 
     echo "<td>{$row['hours']}</td>"; 
     echo "<td>{$row['carreer_name']}</td>"; 
     echo "</tr>"; 
    } 
    } else { 
    echo "<tr><td>No data found<td></tr>"; 
    } 

    $CONN->close(); 

?> 

このコードを押すと、実際には選択されたIDのデータが表示されますが、モーダルでは表示されません。これは、AJAX呼び出しのコードを、この部分に続く、ローカルホストでのアラートにすべてのデータをもたらします:そのアラート後

alert("Server message: " + data); 

、モーダルポップアップが、テーブルは空であり、それはNo data foundを読み込みます。

はそれが言う警告があります

お知らせ:未定義のインデックス:materiaId Cで:\ blablabla \ muestroMateria.php私は完全に理由を理解していない

ライン12

に、データはアラートでポップアップするので、PHPファイルのようにIDを受け取らないので、モーダルは「データが見つかりません」と表示されます。

EDIT:質問に未定義のインデックス警告がある場合でも、それよりも、AJAX codの間のどこかeとPHPファイル。私はまだそれが何であるか分かりません。

+0

materialIdがnullでないかどうかを確認します。 –

+0

@Sachin PATILこんにちは!はい、私はvar_dump()を使用しました。その値を確認し、NULLを返します。私はなぜデータがよく表示されるのか分かりませんが(SELECTクエリがうまく動作すると私に伝えます)、モーダルには値が入りません:/ – xragdollqueen

+0

[PHP: "Notice:Undefined variable"、 "Notice :未定義インデックス "、"通知:未定義オフセット "](http:// stackoverflow。com/questions/4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef) – miken32

答えて

0

この行には問題があります。 POST配列に指定されたキーがありません。

$materiaId = $_POST['materiaId'] 

あなたは正しいデータ(ブラウザインスペクタ/ネットワーク]タブ)を送信していることを確認してください、とも述べてきたよう際、状況から保護する必要がありますが、あなたの変数はnullです。

$materiaId = isset($_POST['materiaId']) ? $_POST['materiaId'] : ''; 

または

$materiaId = array_key_exists('materiaId', $_POST) ? $_POST['materiaId'] : ''; 

また、PHPスクリプトは、JSON(変数、または送信された変数の通常の配列 - または何らかの理由で何を) - 受信されたどのデータをチェックする必要があるあなたが

を使用することができます あなたのPHPスクリプトの応答として

echo var_export($_POST, true);を入力して、スクリプトが受け取っているもの(およびどの形式)をデバッグするかを指定します。

+0

こんにちは!私は、私はそれを試みて、未定義のインデックスまたはNULLを返すことを確認しました。私はそれを見直して、PHPファイルのクエリが正常に動作し、JavaScriptだけでも(変数の値を表示するためのアラートを使用して)AJAXコードはあまりにも良いと思われるので、私は知らない値は "キャッチされ"、それはnullではありませんが、PHPはそれを受け取ることができません:/ – xragdollqueen

+0

私はあなたがデバッグするために行うことができる別のテストで、私の答えを編集しました –

関連する問題