0

PHP が実行されるまで読み込み中の画像を表示しようとしていますが、クエリは 2 ページ目で機能しますが、結果が最初のページに表示されません。私はjqueryまたはajaxが初めてです。

home.php

<html>
<head>
<!--Javascript-->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$('#loading_spinner').show();

var post_data = "items=" + items;
$.ajax({
    url: 'list.php',
    type: 'POST',
    data: post_data,
    dataType: 'html',
    success: function(data) {
        $('.my_update_panel').html(data);
    },
    error: function() {
        alert("Something went wrong!");
    }
});

$('#loading_spinner').hide();
</script>
<style>
   #loading_spinner { display:none; }
</style>
</head>
<body>

<img id="loading_spinner" src="image/ajax-loader.gif">

<div class="my_update_panel">

<!--I am not sure what to put here, so the results can show here-->

</div>

list.phpクエリをテストしたところ、行が出力されました。

<?php
   include_once("models/config.php");

   // if this page was not called by AJAX, die
   if (!$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') die('Invalid request');

   // get variable sent from client-side page
   $my_variable = isset($_POST['items']) ? strip_tags($_POST['items']) :null;  
       //run some queries, printing some kind of result
   $mydb = new mysqli("localhost", "root", "", "db");
   $username = $_SESSION["userCakeUser"];

       $stmt = $mydb->prepare("SELECT * FROM products where username = ?");
   $stmt->bind_param('s', $username->username);
   $stmt->execute();
   // echo results

   $max = $stmt->get_result();
   while ($row = $max->fetch_assoc()) {
      echo $row['title'];
       echo $row['price'];
      echo $row['condition'];

   }

?>
4

4 に答える 4

1

HTML。img を .my_update_panel div 内に配置します

<div class="my_update_panel">
    <img id="loading_spinner" src="image/ajax-loader.gif">
</div>

JS

var url = 'list.php';
var post_data = "items=" + items;

$('.my_update_panel').load(url, post_data, function() {
    $(this +' #loading_spinner').fadeOut('slow');
});

ここ からすぐにダウンロードできるロード イメージの適切な選択を見つけることができます。

于 2013-09-26T19:04:54.127 に答える
0

に問題があります

var post_data = "items=" + アイテム;

成功する

$(document).ready(function(){
        $('#loading_spinner').show();
$.ajax({
    url: 'list.php',
    type: 'POST',
    data: {"items":items},
    dataType: 'html',
    success: function(data) {
        $('.my_update_panel').html(data);
        $('#loading_spinner').hide();     
    },
    error: function() {
        alert("Something went wrong!");
    }
});
});

あなたのために働くかどうか私に知らせてください。

于 2013-09-26T18:45:50.140 に答える
0

ajax コールバック関数をチェーンすることをお勧めします。オプションとしてのコールバックの追加は、将来 jquery から削除されます。

http://api.jquery.com/jQuery.ajax/

非推奨通知: jqXHR.success()、jqXHR.error()、および jqXHR.complete() コールバックは、jQuery 1.8 で非推奨になりました。最終的な削除に備えてコードを準備するには、代わりに jqXHR.done()、jqXHR.fail()、および jqXHR.always() を使用してください。

var post_data = items;
$('#loading_spinner').show();
$.ajax({
    url: 'list.php',
    type: 'POST',
    dataType: 'html',
    data: {"items":post_data},
})
.done(function() {
    console.log("success");
})
.fail(function() {
    console.log("error");
})
.always(function() {
    $('#loading_spinner').hide();
});

always() コールバックで loading_spinner を非表示にすると、ajax 呼び出しでエラーがスローされたときにスピナーも消えます。これが機能しない場合は、サーバー側のコードを検索して問題を解決する必要があります。まず、応答が html であると確信していますか? ajax 呼び出しで dataType を text に設定する必要がある場合があります。

于 2013-09-26T19:12:20.733 に答える
0

ajax に完全なイベントを追加してみてください。うまくいくことを願っています。http://api.jquery.com/jQuery.ajax/を参照

<html>
<head>
<!--Javascript-->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$('#loading_spinner').show();

var post_data = "items=" + items;
$.ajax({
    url: 'list.php',
    type: 'POST',
    data: post_data,
    dataType: 'html',
    success: function(data) {
        $('.my_update_panel').html(data);
    },
    error: function() {
        alert("Something went wrong!");
    },
    complete:function(){
           $('#loading_spinner').fadeOut(500);
});

//$('#loading_spinner').hide();
</script>
<style>
   #loading_spinner { display:none; }
</style>
</head>
<body>

<img id="loading_spinner" src="image/ajax-loader.gif">

<div class="my_update_panel">

<!--I am not sure what to put here, so the results can show here-->

</div>
于 2013-09-26T19:05:35.780 に答える