2012-07-10 78 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调试器,看看实际上是从服务器发送/接收什么?