【发布时间】:2016-12-29 21:17:31
【问题描述】:
我在 compare.php 中有一个函数,它接受一个参数 $data 并使用该数据从 Web 中查找某些内容并提取数据并返回一个数组。
function populateTableA($data);
所以为了填充数组我这样做
$arrayTableA = populateTableA($name);
现在这个数组用于迭代表..
<table id="tableA">
<input type="text" name="search"/><input type="submit"/>
<?php foreach($arrayTableA as $row) { ?>
<tr>
<td><?php echo $row['name']?></td>
<td><?php echo $row['place']?></td>
</tr>
</table>
现在我要做的是在 input 上输入一些数据,然后通过 jquery ajax
function populateTableA($data);
应该被调用并且 $array 应该被重新填充新的内容,然后在 tableA 上填充而不刷新页面。
我写了这个 jquery 但没有结果。
$(document).on('submit',function(e) {
e.preventDefault(); // Add it here
$.ajax({ url: 'compare.php',
var name = ('search').val();
data: {action: 'populateTableA(name)'},
type: 'post',
success: function(output) {
$array = output;
}
});
});
我一直在做网页抓取,上面是为了了解如何实施该策略......我的 php 文件中的原始函数如下
function homeshoppingExtractor($homeshoppingSearch)
{
$homeshoppinghtml = file_get_contents('https://homeshopping.pk/search.php?category%5B%5D=&search_query='.$homeshoppingSearch);
$homeshoppingDoc = new DOMDocument();
libxml_use_internal_errors(TRUE);
if(!empty($homeshoppinghtml)){
$homeshoppingDoc->loadHTML($homeshoppinghtml);
libxml_clear_errors();
$homeshoppingXPath = new DOMXPath($homeshoppingDoc);
//HomeShopping
$hsrow = $homeshoppingXPath->query('//a[@class=""]');
$hsrow2 = $homeshoppingXPath->query('//a[@class="price"]');
$hsrow3 = $homeshoppingXPath->query('(//a[@class="price"])//@href');
$hsrow4 = $homeshoppingXPath->query('(//img[@class="img-responsive imgcent"])//@src');
//HomeShopping
if($hsrow->length > 0){
$rowarray = array();
foreach($hsrow as $row){
$rowarray[]= $row->nodeValue;
// echo $row->nodeValue . "<br/>";
}
}
if($hsrow2->length > 0){
$row2array = array();
foreach($hsrow2 as $row2){
$row2array[]=$row2->nodeValue;
// echo $row2->nodeValue . "<br/>";
}
}
if($hsrow3->length > 0){
$row3array = array();
foreach($hsrow3 as $row3){
$row3array[]=$row3->nodeValue;
//echo $row3->nodeValue . "<br/>";
}
}
if($hsrow4->length > 0){
$row4array = array();
foreach($hsrow4 as $row4){
$row4array[]=$row4->nodeValue;
//echo $row3->nodeValue . "<br/>";
}
}
$hschecker = count($rowarray);
if($hschecker != 0) {
$homeshopping = array();
for($i=0; $i < count($rowarray); $i++){
$homeshopping[$i] = [
'name'=>$rowarray[$i],
'price'=>$row2array[$i],
'link'=>$row3array[$i],
'image'=>$row4array[$i]
];
}
}
else{
echo "no result found at homeshopping";
}
}
return $homeshopping;
}
【问题讨论】:
-
把你的php文件代码,你试过console.log(output)会不会显示任何数据
-
检查更新的问题
-
Php 是服务器端语言,javascript 是客户端,从执行 javascript 的那一刻起,Php 就已经执行了。您不能在 javascript 中更新 php 变量。
-
函数
populateTableA是php还是javascript? -
您是否尝试过使用 echo exit 为 php 文件调试 ajax 调用?
标签: javascript php jquery arrays ajax