我在php中创建了一个简单的搜索函数。当我不对该脚本使用ajax时,它就可以工作了。但是当我使用ajax时,我的内爆函数就消失了。
这是我的密码。
$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并打印上面相同的代码时,我得到了这个结果(在函数数据消失之后)
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 ()
{
if($(document).height() <= $(window).scrollTop() + $(window).height())
{
loadmore();
}
});
function loadmore()
{
var val = $("#row_no").val();
$.ajax({
type: 'post',
url: '/myproject/data/alldata.php',
data: {
getresult:val
},
beforeSend:function(){
$(".loading-data").fadeIn("slow");
},
uploadProgress:function(){
$(".loading-data").fadeIn("slow");
},
success: function (response) {
var content = document.getElementById("dsdplasdy_sdtres");
content.innerHTML = content.innerHTML+response;
document.getElementById("row_no").value = Number(val)+10;
},
complete:function() {
$(".loading-data").fadeOut("slow");
}
});
}
这里是我从隐藏的领域中得到的价值。
<input type="hidden" id="row_no" value="10" />
请任何前[ert]可以帮助我。任何帮助都很感激。谢谢。
发布于 2016-11-30 02:37:52
若要在互联网上传递数组或任何其他相关数据,则需要在发送端对数据进行适当的序列化和编码,并在接收端对数据进行非序列化和解码。有许多方法可以对数据进行序列化,但是PHP直接支持的缺省值是application/x-www-form-urlencoded或多部分/表单-数据,如果使用POST请求方法,这些数据将填充$_POST超全局变量。数据还可以作为URL参数传递,其中URL的查询部分是“application/x form-urlencoded”编码的,并在PHP中填充$_GET超全局变量。
注意:使用$_POST或$_GET超级全局来获取数据。如果您有注册表全局,您应该关闭它,它不再支持从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?
发布于 2016-11-30 04:05:53
谢谢以上回答的每一个人。我一直在想这个。正如我所提到的,它与ajax不一样,我是关于php在通过ajax时如何忘记变量数据的。在那里,我使用了隐藏字段来存储数据,然后使用ajax将其发送到sript。
<input type = "hidden" value= "<?php search parameter ?>"
https://stackoverflow.com/questions/40879214
复制相似问题