2012-01-19 152 views
1

其实我不是家喻户晓的jquery ..我得到了这个jquery脚本,它将变量传递给以json格式显示数据的文件..但是这里我无法显示数据..plz看到这段代码jquery将变量传递给php文件

$(document).ready(function() { 
    var globalRequest = 0; 
    $('#search').bind('keyup', function(event) { 
     if (event.keyCode == 13) { 
      searchAction(); 
     } 
    }); 

    $('#search-link').bind('click', function(event) { 
     searchAction(); 
    }); 

    var searchAction = function() { 
     var value = $('#search').val(); 
     var cat = $('#category').val(); 
     var country = $('#country').val(); 
     var page = $('#page').val(); 

     var resultContainer = $('#results'); 

     if (value.length < 3 && globalRequest == 1) { 
      return; 
     } 

     _gaq.push(['_trackEvent', 'Search', 'Execute', 'Page Search', value]); 

     globalRequest = 1; 

     $.ajax({ 
       url: "search.php", 
       dataType: 'json', 
       type: 'GET', 
       data: "q="+value+"&category="+cat+"&country="+country+"&page="+page, 
       success: function(data){ 
       globalRequest = 0; 
       resultContainer.fadeOut('fast', function() { 
        resultContainer.html(''); 
        console.log(data.length); 

        for (var x in data) { 

         if (!data[x].price) 
          data[x].price = 'kA'; 

         if (!data[x].img) 
          data[x].img = 'assets/images/no.gif'; 

         var html = '<div class="res-container">'; 
         html += '<h2><a href="'+data[x].url+'" target="_blank">'+data[x].Title+'</a></h2>'; 
         html += '<img src="'+data[x].img+'">'; 
         html += '<h3>Price: '+data[x].price+'</h3>'; 
         html += '</div>'; 

         resultContainer.append(html); 
        } 

        resultContainer.fadeIn('fast'); 
       }); 

       } 
      }); 
    }; 
}); 

在search.php中的数据是简单的回声..如何从search.php中获取数据并显示在这里.. 抱歉不好英语

回答

5

首先,

你不应该连接你的参数,而是使用散列表:

 $.ajax({ 
      url: "search.php", 
      dataType: 'json', 
      type: 'GET', 
      data: { 
      q : value, 
      category : cat, 
      country : country, 
      page : page } 

因为你的方法是(类型: 'GET'),只是使用($ _ GET [参数]法)在PHP文件

<?php 
$value = htmlentities($_GET['q']); 
$category = htmlentities($_GET['category ']); 
$country = htmlentities($_GET['country ']); 

在JS回调函数,这是怎么了您登录全响应(“东西”是一个标签):

success: function(data){ 
    var $xml = $(data); 
    console.log($xml); // show the whole response 
    console.log($xml.find('something')); // show a part of the response : <something>value</something> 
}); 
2

这是一个有点很难理解你的问题是什么,但我的猜测是,你需要JSON在搜索呼应回之前的数据进行编码.PHP。

简化示例......

例如,

success: function(data){ 
    var obj = $.parseJSON(data); 
    alert(data.a); 
    $("#some_element").html(data.b); 
} 

<?php 
$somevar = $_GET['a'] 
$anothervar = $_GET['b'] 

//Do whatever 


$prepare = array('a'=>$result1,'b'=>$result2) //etc.. 
$json = json_encode($prepare); 
echo $json; 
exit(); 
?> 

然后,您可以用访问的JavaScript结果