2012-08-02 55 views
1

我有一个表单,提交其内容post方法php脚本,它返回一个xml文件。我发现在检测什么是错的问题,我还没有看到在Firefox控制台的任何错误,这是jQuery代码:jQuery的阿贾克斯响应没有发送

$(document).ready(function() { 
$('form').submit(function() { 
//alert('bonjour'); 
var pr= $('#prenom').val(); 
var te=$('#tech').val(); 
var sk=$('#skills').val() ; 
$("#form1").ajaxError(function(){ 
alert("An error occured!"); 
}); 
$.ajax({ 
url: "filter.php", 
type: "POST", 
data: { prenom: pr , tech: te , skills: sk }, 

dataType: "xml", 
success: function(data) { 
//alert(data); 
$(data).find('collaborateur').each(function(){ 

var id = $(this).attr('id'); 
var urlPhoto = $(this).find('urlphoto').text(); 
var nb_cv = $(this).find('nb_cv').text(); 
var poste = $(this).find('poste').text(); 
var nb_ann_exp = $(this).find('nb_ann_exp').text(); 
var identite = $(this).find('identite').text(); 
var nom = $(this).find('nom').text(); 
var prenom = $(this).find('prenom').text(); 
$('<div class="items" id="link_'+id+'"></div>').html('<a href="'+urlPhoto+'" 

style="float:left">'+nom+'</a><span>'+nom+' '+prenom+'</span>').appendTo('#result'); 

} 

); 
//$('#result').html(data); 
alert('Load was performed.'); 
}, 
fail: function(){alert ('fail');} 
}); 
}); 
}); 

产生xmlfilter.phpphp代码如下

header('Content-type: text/xml'); 
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; 
echo '<collaborateurs>'; 
include("connection.php"); 
require("functions.php"); 
$tab = array(); 
$tab = filter($_POST['prenom'], $_POST['tech'], $_POST['skills']); 
// print_r($tab); 
// exit; 
foreach ($tab as $key => $value) 
{ 
echo '<collaborateur id="'.$key.'">'; 
echo '<nom>'.$value['nom'].'</nom>'; 
echo '<prenom>'.$value['prenom'].'</prenom>'; 
echo '<nb_cv>'.$value['nb_cv'].'</nb_cv>'; 
echo '<poste>'.$value['poste'].'</poste>'; 
echo '<nb_ann_exp>'.$value['nb_exp'].'</nb_ann_exp>'; 
echo '<identite>'.$value['ident'].'</identite>'; 
// echo '<nb_visite>'.$value['nb_visite'].'</nb_visite>'; 
echo '</collaborateur>'; 
} 
echo '</collaborateurs>'; 

的滤波器功能

function filter($pren, $tech, $comp) 
{global $connection; 
$tab = array(); 
$query="SELECT DISTINCT c.id_c,`prenom`,`nom`,`nb_exp`,`ident`,`poste` , NomPhoto, 

nb_cv FROM `collaborateur` c, techno_mai m , competence_cle cc where(prenom like  

'$pren' or (m.lib_tech like '$tech' and m.id_c =c.id_c) or (cc.id_c = c.id_c and 

cc.lib_cc like '$comp')) "; 

$c12=mysql_query($query, $connection)or die(mysql_error()); 
$i =0; 
while($fil= mysql_fetch_array($c12)) 
{ 
$tab[$i]['prenom'] =$fil['prenom']; 
$tab[$i]['nom']= $fil['nom']; 
$tab[$i]['nb_exp']=$fil['nb_exp']; 
$tab[$i]['ident']=$fil['ident']; 
$tab[$i]['poste']=$fil['poste']; 
$tab[$i]['NomPhoto']=$fil['NomPhoto']; 
$tab[$i]['nb_cv']=$fil['nb_cv']; 
$tab[$i]['nom']=$fil['nom']; 
$tab[$i]['prenom']=$fil['prenom']; 
$i++; 
} 
return $tab; 

} 

我测试在一个形式中,php代码而不ajax和它会呈现正确的xml文件。 服务器输出(XML文件)没有Ajax

<collaborateurs> 
<collaborateur id="0"> 
<nom>semi</nom> 
<prenom>troc</prenom> 
<nb_cv>0</nb_cv> 
<poste>tech</poste> 
<nb_ann_exp>12</nb_ann_exp> 
<identite>dis</identite> 
</collaborateur> 
<collaborateur id="1"> 
<nom>tarek</nom> 
<prenom>fellah</prenom> 
<nb_cv>0</nb_cv> 
<poste>dev</poste> 
<nb_ann_exp>2</nb_ann_exp> 
<identite>dev web</identite> 
</collaborateur> 
<collaborateur id="2"> 
<nom>ahmed</nom> 
<prenom>hamza</prenom> 
<nb_cv>0</nb_cv> 
<poste>dev web</poste> 
<nb_ann_exp>0</nb_ann_exp> 
<identite>dev web</identite> 
</collaborateur> 
</collaborateurs> 

而且在此先感谢。

+1

* //警报(数据); *时未加注释,是什么输出? – mithunsatheesh 2012-08-02 12:31:28

+1

我看到你有一个警告注释以及print_r,所以你测试了服务器通信是否正确...它是否工作? – Onheiron 2012-08-02 12:31:45

+0

是你的权利 – 2012-08-02 12:36:49

回答

1

要设置

data: { prenom: pr , te: tech , sk: skills }, 

但随后retriving

$tab = filter($_POST['prenom'], $_POST['tech'], $_POST['skills']); 

应该

data: { prenom: pr , tech: te , skills: sk}, 
+1

我改正它,现在表单的ajaxError被触发 – 2012-08-02 12:53:34

+0

现在它的工作原理,但我改变了点击事件提交事件,有人可以告诉我问题的根源? – 2012-08-21 10:50:14

+0

如果在提交时绑定,则提交默认事件将被触发,从而执行表单操作(如果没有设置操作,则只是'刷新'页面)。你可以告诉它是这样做的?它出现在你的页面URL中。您必须防止此行为才能对提交事件执行自定义操作。因此,如果您更喜欢使用submit作为事件,只需将提交时触发的函数设置为:function(e){e.preventDefault; ...你的代码在这里...} – Onheiron 2012-08-21 10:56:35