2016-05-08 16 views
0

HTML、AJAX、およびPHPを使用してデータを渡す。 AJAXを導入する前に、すべての機能(フォームタグとPHP処理値をHTMLから削除しました)。jQuery AJAXからPHPスクリプト

ドロップダウン(カテゴリ)は、MySQLクエリから生成されます。ユーザーがオプションを選択すると、IDをajax経由でPHPスクリプト(index.php)に渡して、MySQLクエリを実行して別のドロップダウン(サブカテゴリ)を設定したいと考えています。

Chromeコンソールログは、ajaxがIDを正しく渡していることを示します。

Firebugも、このURLが正しく、URLが正しいことを示しています(index.php?business_category_id = ajax-passed値)。 GET変数が渡されていて、私のPHPスクリプトがそれを探している場合、なぜスクリプトは応答していませんか?なぜそれは価値を受けていないのですか?私はそれをエコーすることはできませんので、それが受信されていないことを知っています。

ajaxスクリプトはjs/script.jsにあり、index.php(my controller)はルートにあり、html(buy-a-biz.php)のページはルートにあり、 PHPスクリプト(下記参照)。

誰でも助けることができれば、私は非常に感謝します。私はjQuery ajaxを初めて使用しています。

HTML。

<select name="category" id="business-category"> 
    <option value="all_categories">Select category</option> 
    <?php foreach ($categories as $category): ?> 
     <option value="<?php htmlout($category['id']); ?>"><?php htmlout($category['name']); ?></option> 
    <?php endforeach; ?> 
</select> 

AJAX。私も$ .getと$ .postを使って実験しました。

$(document).ready(function(){ 

    $("#business-category").change(function(){ 
     var category_id = $(this).val(); 
     console.log(category_id); 

     $.ajax({ 
      type: 'GET', 
      url: 'index.php', 
      data: { business_category_id: category_id }, 
      success: function(category_id){ 
       $("#result").html(category_id + ' submitted successfully!'); 
      } 
     }); 
    }); 
}); 

PHP。

if(isset($_GET['business_category_id'])){ 

    $category_id = htmlspecialchars($_GET['business_category_id']); 

    include 'includes/dbconnect.php'; 

    try { 
     $sql = "SELECT * FROM sub_category 
       WHERE category_id = :category_id"; 
     $s = $db->prepare($sql); 
     $s->bindValue(":category_id", $category_id); 
     $s->execute(); 

     while($row = $s->fetch(PDO::FETCH_ASSOC)){ 
      $sub_categories[] = array(
       'id' => $row['id'], 
       'category_id' => $row['category_id'], 
       'name' => $row['name'] 
      ); 
     } 

     $sql2 = "SELECT * FROM category"; 
     $s2 = $db->prepare($sql2); 
     $s2->execute(); 

     while($row = $s2->fetch(PDO::FETCH_ASSOC)){ 
      $categories[] = array(
       'id' => $row['id'], 
       'name' => $row['name'], 
      ); 
     } 
    } 
    catch (PDOException $e) { 
     $errMsg = "Error fetching data" . $e->getMessage(); 
     include 'error.html.php'; 
     exit(); 
    } 

    include 'buy-a-biz.php'; 
    exit(); 

} 
+0

[問題をPHPのためにJavascriptを(jqueryの)からのPOSTデータを渡す?](HTTPの可能性のある重複: //stackoverflow.com/questions/4191948/passing-post-data-from-javascriptjquery-to-php-problems) –

+0

@IvanBarayevのおかげで、私はこの記事からソリューションを開発することができませんでした。 – JimB814

答えて

1

あなたは$.ajaxdoneコールバックを渡しています。あなたはどちらか、このコールバックsuccess

$.ajax({ 
    type: 'GET', 
    url: 'index.php', 
    data: { business_category_id: category_id }, 
    success: function(category_id){ 
      $("#result").html(category_id + ' submitted successfully!'); 
     } 
    }); 

に名前を付けたり、$.ajaxによって返された約束をdoneを呼び出す必要があります。

$.ajax({ 
    type: 'GET', 
    url: 'index.php', 
    data: { business_category_id: category_id }, 
}).done(function(category_id) { 
    $("#result").html(category_id + ' submitted successfully!'); 
}); 
+0

ご返信ありがとうございます。成功を利用しても成功するわけではありません。私は成功を実験して、成功した場合にのみメッセージが表示されることを学びました。私のPHPスクリプト@ index.phpはまだデータを受信して​​いません。 – JimB814

+0

成功を反映するために上記のコードを編集しました。書かれているように、このコードはエラーを生成します。 category_idパラメータが削除された場合、function()...の代わりにメッセージ(category_id)が表示されます。 – JimB814

関連する問題