2012-07-10 44 views
0
  $(function(){ 
       $(".product-item").click(function(){ 
        var sku = $(this).attr("name"); 
        var dataString = "sku="+sku; 
        $.ajax({ 
         type: "POST", 
         url: "data.php", 
         data: dataString, 
         dataType: 'html', 
         success: function(){ 
          $("#product").load("shop4.php #product > *", function(){ 
           $("#product").delay(200).fadeOut(400); 
           $("#product").delay(601).fadeIn(); 
           $(".img-wrap img").delay(500).fadeIn(300); 
           $(".img-wrap img").delay(300).animate({paddingBottom: "15%"}); 
           $(".img-wrap img").hover(function(){ 
            $(this).animate({ 
             paddingTop: "5%", paddingBottom: "25%" 
            }); 
           }, function(){ 
            $(this).animate({ 
             paddingTop: "15%", paddingBottom: "15%" 
            }); 
           }); 
          }); 
         } 
        }); 
       }); 
      }); 

當我點擊產品項目後,產品部分淡出,然後淡入所有正確的信息,但PHP不讀取發佈數據,需要注意的是,要獲得點擊功能工作我不得不把這個腳本放在div id產品後面。ajax沒有發佈到php onclick

PHP是簡單的(這是data.php):

<?php 
global $sku; 
if (isset($_POST['sku'])) { 
    $sku = $_POST['sku']; 
    echo $sku; 
} 
?> 

XHR響應

XHR finished loading: "mysite.com/shop4.php". jquery.min.js:4 
f.support.ajax.f.ajaxTransport.send jquery.min.js:4 
f.extend.ajax jquery.min.js:4 
(anonymous function) shop4.php:238 
f.event.dispatch jquery.min.js:3 
f.event.add.h.handle.i jquery.min.js:3 
XHR finished loading: "mysite.com/shop4.php". jquery.min.js:4 
f.support.ajax.f.ajaxTransport.send jquery.min.js:4 
f.extend.ajax jquery.min.js:4 
f.fn.extend.load jquery.min.js:4 
$.ajax.success shop4.php:243 
f.Callbacks.o jquery.min.js:2 
f.Callbacks.p.fireWith jquery.min.js:2 
w jquery.min.js:4 
f.support.ajax.f.ajaxTransport.send.d 
+0

我想指出你有dataType設置爲「html」,但你似乎只是簡單地返回文本。 – TheZ 2012-07-10 17:15:37

+0

shop4.php是什麼樣的?它有一個id產品的元素,什麼是'> *'好處? – 2012-07-10 17:18:27

+0

@Jørgen''*'是爲了確保它不會將div產品加載到div產品中,而只是加載一次。 – kqlambert 2012-07-10 17:30:11

回答

1

您在代碼中有一些奇怪的事情。

1)您不使用來自任何地方的AJAX調用的響應。 success需要一個參數來提供來自該調用的響應,但您從不使用它。

$.ajax({ 
    ... 
    success: function(resp) { 
     // do something with resp object 
    } 
}); 

2)你在你的函數有一個return false;聲明,AJAX調用作出後,將立即執行(它不會等待)。所以你的函數總是會立即返回false,不確定這是否是你正在尋找的行爲。

除了這兩個項目,你可以使用像Chrome的內置或Firebug的XHR調試器,看看實際上是從服務器發送/接收什麼?