2017-08-03 283 views
0

AJAX搜索打印數據的另一頁我有這樣的jQuery的功能:從通過連接到PHP服務器

function findProducts() { 
    $.ajax({ 
     type: "POST", 
     url: "code.php", 
     data: { 
      city: $(".city").val(), 
      product: $("#product").val(), 
     }, 
    }).done(function(data) { 
     window.location.href = "results.html"; 
     var obj = JSON.parse(data); 
     obj.forEach(function(index) { 
      var tableBody = $("tbody"); 
      var row = $("<tr>"); 

      var columnImgName = $("<td>").addClass("img-name"); 
      var divImg = $("<div>").addClass("image"); 
      var image = $("<img>").addClass("image-product").attr("src", "img/no-image.png"); 
      var nameProduct = $("<p>").addClass("name-product").index[0]); 

      var columnPrice = $("<td>").addClass("prico").index[1]); 

      var rows = tableBody.append(row); 

      rows.append(columnImgName).append(divImg).append(image); 
      rows.append(columnImgName).append(nameProduct); 
      rows.append(columnPrice); 
     }); 
    }); 
} 

我試圖運行通知城市的產品。我的數據庫進行搜索。我正在對我的服務器上的php代碼做一個ajax,並返回一個JSON與我搜索的數據。我想獲取在這個JSON上返回的數據,然後轉到另一個頁面,在那裏我將打印一張包含我得到的信息的表格。我試過這個代碼,但它不工作,它只是重定向到另一個頁面,但表不出現。爲表中的HTML代碼是這樣的:

 <table> 
      <thead> 
       <tr> 
        <th>Product</th> 
        <th>Price</th> 
       </tr> 
      </thead> 
      <tbody> 
      </tbody> 
     </table> 
+0

'window.location.href =「results.html」運行搜索;'將重定向和休息代碼將是沒用的。相反,創建一個新的頁面來打印和設計它,不管你喜歡什麼,並通過它指示POST。 – Rafee

+0

當我在頁面index.html中引用此代碼的運行位置時,我在控制檯上收到一條消息,說該方法僅適用於帶協議地址(如http)的請求。我不打算把它上傳到服務器,我試圖在Cordova應用程序中這樣做,所以沒有協議 – allansanfer

回答

0

我能夠把一個動作的形式去做,這就是會帶我到results.html頁面,也把形式方法得到。

在頁面結果,我輸入下面的jQuery代碼,來從URI中的數據和我的數據庫

var qs = (function(a) { 

if (a == "") return {}; 

var b = {}; 

for (var i = 0; i < a.length; ++i) { 

    var p=a[i].split('=', 2); 

    if (p.length == 1) { 

     b[p[0]] = ""; 
    } else { 

     b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); 
    } 
} 

return b; 
})(window.location.search.substr(1).split('&')); 

var city = qs["city"]; 
var product = qs["product"]; 

function findProducts() { 

    $.ajax({ 
     type: "POST", 
     url: "code.php", 
     data: { 
      city: city, 
      product: product, 
     }, 
    }).done(function(data) { 

     var obj = JSON.parse(data); 

     obj.forEach(function(index) { 

      var name = index[0]; 
      var price = index[1]; 

      var bodyTable = $("body").find("tbody"); 
      var row = makeRows(name, price); 

      bodyTable.append(row); 
     }); 
    }); 
} 

function makeRows(name, price) { 

    var row = $("<tr>"); 

    var columnImgName = $("<td>").addClass("img-name"); 
    var divImg = $("<div>").addClass("image"); 
    var image = $("<img>").addClass("image-product").attr("src", "img/no-image.png"); 
    var nameProduct = $("<p>").addClass("name-product").text(name); 

    divImg.append(image); 
    columnImgName.append(divImg); 
    columnImgName.append(nameProduct); 

    var columnPrice = $("<td>").addClass("price").text(price); 

    row.append(columnImgName); 
    row.append(columnPrice); 

    return row; 
} 

findProducts(); 
0
show your data on same page by using bootstrap datatable 
Include all necessary js and bootstrap 
View 
<table id="table_id1" style="border-bottom: 1px solid #ddd" class="table table-advanced table-bordered table-hover"> 
    <thead class="blue"> 
     <tr> 
      <th>Product</th> 
      <th>Price</th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php          
      foreach($Data as $row) {  
     ?> 
     <tr class="odd gradeX"> 
      <td class="center"><?php echo $row['product'];?></td> 
      <td class="center"><?php echo $row['price'];?></td> 
     </tr> 
     <?php }?> 
    </tbody> 
</table> 


$("#search_button").click(function() { 
     $.post("code.php",{"city": $('#city').val(),"product": $('#product').val()},function(data){ 
      tableid="table_id"; 
      update_dataTable(data,tableid); 
     },'json'); 
}); 

function update_dataTable(data,tableid) { 

    var oTable = $("#"+tableid).dataTable(); 
    oTable.fnClearTable(); 

    $(data).each(function(index) { 
     var row = []; 


     row.push(data[index].product); 
     row.push(data[index].price); 

     oTable.fnAddData(row); 
    }); 
} 

show your data on same page by using bootstrap datatable 
+0

我已經在使用另一個框架,我無法在html上使用php,我是使其成爲科爾多瓦應用程序。我真的需要在另一頁上顯示數據 – allansanfer

+0

ohk我會嘗試... –