簡體   English   中英

ajax請求不返回數據

[英]ajax request doen't return data

單擊div后,我嘗試更改數據,但未更改結果

JS代碼

$(document).ready(function() {

    $('#piso .caixa').click(function() {
        var valorpiso = $(this).text();
        alert(valorpiso);
        $.ajax({
            type:"post",
            url:"getpiso.php",
            data:"npiso="+valorpiso,
            sucess:function(data){
                $("#caixas").html(data);
            }
        });
     });

});

警報正在打印正確的值

PHP代碼

 $piso1=$_POST["npiso"];

 $result=mysql_query("select * FROM rooms where floor='$piso1' ");
 while($dados=mysql_fetch_array($result)){
     echo "<div id='caixa'>";
     echo "<p>$dados[block].$dados[floor].$dados[room]</p>";
     echo "</div>";
 }

你能幫助我嗎?

這是您的實際代碼嗎? 回調函數有一個拼寫錯誤:應該是“成功”,而不是“成功”。

success:function(data){
    $("#caixas").html(data);
}

如果那不起作用,請嘗試獲取有關正在發生的事情的更多信息。 使用某種開發工具來觀察ajax響應。 (在Chrome上為CTRL + SHIFT + I)

OBS:您的PHP代碼容易受到SQL注入的攻擊。 在這里閱讀有關它的更多信息: 如何防止PHP中的SQL注入?

有2個問題

1)@Rogerio說的對,您使用了"sucess":正確的方法是"success":

但是現在使用jquery可以使用以下方法:

  • jqXHR.done(function( data, textStatus, jqXHR ) {});

    成功回調選項的替代結構.done()方法替換了不推薦使用的jqXHR.success()方法。 有關實現的詳細信息,請參考deferred.done()

  • jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});

    錯誤回調選項的替代構造.fail()方法替換了不建議使用的.error()方法。 有關實現的詳細信息,請參考deferred.fail()

  • jqXHR.always(function( data|jqXHR, textStatus, jqXHR|errorThrown ) { });

    .always()方法是complete回調選項的替代構造,它取代了不建議使用的.complete()方法。

    響應成功的請求,該函數的參數與.done()的參數相同:data,textStatus和jqXHR對象。 對於失敗的請求,參數與.fail()的參數相同:jqXHR對象,textStatus和errorThrown。 有關實現的詳細信息,請參考deferred.always()

  • jqXHR.then(function( data, textStatus, jqXHR ) {}, function( jqXHR, textStatus, errorThrown ) {});

    合並了.done().fail()方法的功能,從而允許(從jQuery 1.8開始)對底層Promise進行操作。 有關實現的詳細信息,請參考deferred.then()

在以下網址中了解有關內容: http : //api.jquery.com/jquery.ajax/

一種類型,您使用"npiso="+valorpiso ,但未進行編碼,而是使用json,例如: { npiso: valorpiso } (jQuery自動編碼數據)

2)請勿在HTML中使用重復的ID,此重復的ID應按結果編號顯示:

while($dados=mysql_fetch_array($result)){
     echo "<div id='caixa'>";

使用class=代替id=

首先,將Jquery更新到最新版本

使用Javascript:

$.ajax({
    "type": "POST",
    "url": "getpiso.php",
    "data": { "npiso": valorpiso }
}).done(function(data) {
    console.log(data);
    $(".list_caixa").html(data);
}).fail(function(err) {
    console.log("Failed", err);
}).always(function() {
    console.log("complete");
});

“HTML”:

 $piso1=$_POST["npiso"];

 $result=mysql_query("select * FROM rooms where floor='$piso1' ");
 while($dados=mysql_fetch_array($result)){
     echo "<div class='list_caixa'>";
     echo "<p>$dados[block].$dados[floor].$dados[room]</p>";
     echo "</div>";
 }
  • 您應該調試(alert()或console.log()),以檢查成功處理程序中是否已正確返回數據,並檢查ID為“ #caixas”的元素是否已存在。

的index.php

`

<html>

    <head>

         <script src="//code.jquery.com/jquery-1.10.2.js"></script>
         <script>
            $(function () {
               $('#piso .caixa').click(function () {
                var valorpiso = $(this).text();
                $.ajax({
                    type: "post",
                    url: "getpiso.php",
                    data: "npiso=" + valorpiso,
                    success: function (data) {
                        $("#caixas").html(data);
                    }
                });
            });

        });
       </script>
    </head>
     <body>
       <div id="piso">
        <p class="caixa" style="cursor:pointer;color:red;background-color:#000;padding:10px;">TEST</p>
       </div>
       <div id="caixas">

       </div>
</body>

`

getpiso.php

     <?php
        if($_POST["npiso"]!=null){
            $piso1=$_POST["npiso"];
            echo "<div id='caixa'>";
            echo "<p>".$piso1." RESULT</p>";
            echo "</div>";
        }
        ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM