2016-11-30 39 views
0

我在php中創建了一個簡單的搜索函數。它的工作時,我沒有使用Ajax的腳本。但是當我使用ajax時,我的內爆函數消失了。如何在ajax調用發送時使用PHP中的數組獲取數據

這裏是我的代碼的樣子。

$searchtag = filter_var($_GET['search'], FILTER_SANITIZE_STRING); 
$searchtagrlce = str_replace("+", " ", $searchtag); 
$searchTermsis = explode(' ', $searchtagrlce); 

    $searchTermBitsis = array(); 
    foreach ($searchTermsis as $terms) { 
     $terms = trim($terms); 
     if (!empty($terms)) { 
      $searchTermBitsis[] = "tbale_row1 LIKE '%$terms%' OR tbale_row12 LIKE '%$terms%' OR tbale_row13 LIKE '%$terms%'"; 

     } 
    } 




    $getdataquerystores = "SELECT `tbale_row1`, `tbale_row2`, `tbale_row3`, `tbale_row4`, `tbale_row5`, `tbale_row6` FROM `tablename` WHERE ".implode(' AND ', $searchTermBitsis). " ORDER BY tbale_row1 DESC LIMIT $limit, 10"; 
     $getdataquerystoress = mysqli_query($connection, $getdataquerystores); 

當我回聲或打印沒有Ajax上述代碼,即時得到此

SELECT `tbale_row1`, `tbale_row2`, `tbale_row3`, `tbale_row4`, `tbale_row5`, `tbale_row5` FROM `tablename` WHERE tbale_row1 LIKE '%a%' OR tbale_row2 LIKE '%a%' OR tbale_row3 LIKE '%a%' ORDER BY tbale_row1 DESC LIMIT 0, 10

但是當我使用AJAX和列印以上相同的代碼,即時獲取此(後功能數據已經DI SAPPEAR)

SELECT `tbale_row1`, `tbale_row2`, `tbale_row3`, `Logo_croped_554`, `tbale_row5, `tbale_row6` FROM `tablename` WHERE ORDER BY tbale_row1 DESC LIMIT 10, 10

這裏是我的Ajax代碼

$(window).scroll(function() 
 
    { 
 
\t if($(document).height() <= $(window).scrollTop() + $(window).height()) 
 
\t { 
 
\t \t loadmore(); 
 
\t } 
 
    }); 
 

 
    function loadmore() 
 
    { 
 
     var val = $("#row_no").val(); 
 
     $.ajax({ 
 
     type: 'post', 
 
     url: '/myproject/data/alldata.php', 
 
     data: { 
 
     getresult:val 
 
     }, 
 
\t beforeSend:function(){ 
 
\t \t $(".loading-data").fadeIn("slow"); 
 
\t }, 
 
\t 
 
\t uploadProgress:function(){ 
 
\t \t 
 
\t \t $(".loading-data").fadeIn("slow"); 
 
\t }, 
 
     success: function (response) { 
 
\t var content = document.getElementById("dsdplasdy_sdtres"); 
 
     content.innerHTML = content.innerHTML+response; 
 
\t 
 
     
 
     document.getElementById("row_no").value = Number(val)+10; 
 
\t }, 
 
\t complete:function() { 
 
\t \t $(".loading-data").fadeOut("slow"); 
 
\t \t 
 
\t } 
 
\t 
 
     }); 
 
    }

這裏是值Im從TNE隱藏字段越來越

<input type="hidden" id="row_no" value="10" />

請任何EX [ERT可以幫助我。任何幫助非常感謝。謝謝。

回答

0

要通過互聯網或任何其他數據傳遞數據,數據需要在發送者端正確序列化和編碼,並在接收端進行解序列化和解串。有很多方法可以對數據進行serilize,但是直接支持的缺省值是application/x-www-form-urlencoded或multipart/form-data,如果使用POST請求方法,它將填充$ _POST超全局變量。數據也可以作爲URL參數傳遞,其中URL的查詢部分是「application/x-www-form-urlencoded」編碼,並在PHP中填充$ _GET超全局變量。

注意:使用$ _POST或$ _GET superglobals獲取數據。如果您已註冊全局變量,則應將其關閉,從版本5.4開始,它不再受支持。http://php.net/manual/en/security.globals.php

對於您的特定情況,您未通過AJAX請求傳遞搜索參數。

url: '/myproject/data/alldata.php', 

應該

url: '/myproject/data/alldata.php?search='+encodeURI(searchTerms), 

您需要填充searchTerms變量與搜索字詞或與您的實際搜索字詞代替searchTerms。如果您不知道如何獲得搜索條件,請參閱How to retrieve GET parameters from javascript?

+0

您好@Ralpha,Im不填充任何形式的或提交的任何數據。我只是檢索數據,當用戶滾動到頁面的底部,從最後一個ID到下一個數據。我只有這個〜implode〜函數纔有這個麻煩。我用我的ajax代碼使用了其他腳本,他們正在工作。有什麼建議麼 ? – alex

+0

亞歷克斯,我已經檢查了你的代碼,它是一個JavaScript的方法後,這意味着數據將顯示在超全局$ _POST ['getresult']的形式等效,無論你的問題是重複的。 –

0

謝謝大家誰回答上面。我一直在想這個。它不會像我提到的那樣與ajax有關。我是關於如何在變量數據通過ajax時忘記變量數據。在那裏我使用隱藏字段來存儲數據,然後我使用ajax將它發送給sript。

<input type = "hidden" value= "<?php search parameter ?>"

+0

如果用戶在不同的選項卡中打開不同的搜索,因爲這些選項卡之間的Cookie /會話相同,所以此解決方案非常可怕並且會中斷。按照我們的建議傳遞搜索參數會更好。 –

+0

我們可以摧毀它一個功能的成功 – alex

+0

可悲的是我看到專業應用程序濫用會話這種方式。您將不會有唯一不支持多個選項卡的網站,但通過不使用會話進行頁面/請求特定數據來正確支持多個選項卡/窗口會更好。該會話更適合用戶特定的數據,因此您可以在Windows /選項卡之間共享數據。 –

相關問題