2014-11-05 73 views
0

我有问题,使用php/ajax/mysql传递2个参数。PHP Ajax GET方法不会触发

不能追踪出了问题

这里是Ajax代码

<script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"> 
</script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$('#myonoffswitch').click(function(){ 
var myonoffswitch=$('#myonoffswitch').val(); 
if ($("#myonoffswitch:checked").length == 0) 
{ 
var a=myonoffswitch; 
} 
else 
{ 
var a="off"; 
} 

$.ajax({ 
type: "POST", 
url: "process.php", 
data: "ps="+a , 
success: function(html){ 
$("#display").html(html).show(); 
} 
}); 

}); 
}); 
</script> 

<script type="text/javascript"> 
$(document).ready(function(){ 
$(".cb-enable").click(function(){ 
var parent = $(this).parents('.switch'); 
$('.cb-disable',parent).removeClass('selected'); 
$(this).addClass('selected'); 
$('.checkbox',parent).attr('checked', true); 
}); 
$(".cb-disable").click(function(){ 
var parent = $(this).parents('.switch'); 
$('.cb-enable',parent).removeClass('selected'); 
$(this).addClass('selected'); 
$('.checkbox',parent).attr('checked', false); 
}); 
}); 
</script> 

PHP:

$k=1; 
while($row = mysqli_fetch_array($result)) { 
$id = $row['ID']; 
$ps = $row['Status']; 

    echo "<div class=\"onoffswitch\">\n"; 
     echo "<input type=\"checkbox\" name=\"$k\" class=\"onoffswitch-checkbox\" id=\"$k\"\n"; 
     if($ps=="1") { 
      echo "checked "; 
     } 
     echo ">"; 
     echo "<label class=\"onoffswitch-label\" for=\"$k\">\n"; 
     echo " <div class=\"onoffswitch-inner\"></div>\n"; 
     echo " <div class=\"onoffswitch-switch\"></div>\n"; 
     echo "</label>\n"; 
    echo "</div>\n"; 
    $k++; 
} 

过程.PHP是类似于下面:

$ PS = $ _POS [ 'PS']; $ id = $ _ POS ['id'];

//的mysql_query( “UPDATE TBL设置状态= '$ PS',其中ID = $ ID”); //不起作用

的mysql_query( “UPDATE TBL设置状态= '$ PS',其中ID = 1”);

代码更新,并仅使1参数/参数时的工作。

POST或GET方法都会好的。请帮忙吗?

+1

编辑你的问题,而不是写评论 – Sal00m 2014-11-05 08:02:38

+0

请确保你的代码是正确缩进,否则它只是不可读 – 2014-11-05 08:06:19

+0

更新代码 – 2014-11-05 08:09:03

回答

0

里面你的PHP文件你有很多的echo声明。

将您的代码更改为此。并告诉我,如果它的工作原理

$k = 1; 

$content = null; 

while ($row = mysqli_fetch_array($result) or die ("<p>DB Erroe!!!</p>")) { 
    $id = $row['ID']; 
    $ps = $row['Status']; 

    $content .= "<div class=\"onoffswitch\">\n"; 
    $content .= "<input type=\"checkbox\" name=\"$k\" class=\"onoffswitch-checkbox\" id=\"$k\"\n"; 
    if ($ps == "1") { 
     echo "checked "; 
    } 
    $content .= ">"; 
    $content .= "<label class=\"onoffswitch-label\" for=\"$k\">\n"; 
    $content .= " <div class=\"onoffswitch-inner\"></div>\n"; 
    $content .= " <div class=\"onoffswitch-switch\"></div>\n"; 
    $content .= "</label>\n"; 
    $content .= "</div>\n"; 
    $k++; 
} 

echo $content; 
+0

它不能解决问题。加上我得到数据库错误(DB Erroe !!!) – 2014-11-05 08:37:51

+0

所以这意味着你没有结果返回'mysqli_fetch_array($ result)'...首先检查查询是否正确,它正在执行 – Umair 2014-11-05 08:47:12

+0

对不起,我的意思是点击任何复选框没有任何反应。数据库不会影响任何行。 – 2014-11-05 08:49:18

0
var send='{"ps":"'+a+'","id":"'+id+'"}'; 
var obj=JSON.parse(send); 
$.ajax({ 
type: "GET", 
url: "process.php", 
data: obj, 
success: function(html){ 
$("#display").html(html).show(); 
} 
}); 
+0

尝试过,但不起作用。即使我尝试传递只有1个参数使用数据:“ps =”+ a – 2014-11-05 08:20:08

+0

什么是你在控制台中得到的错误..因为我认为你应该使用JSON发送数据..告诉我错误在colsole ..我会给你json方法 – 2014-11-05 08:21:21

+0

虽然没有错误。什么都没有发生 – 2014-11-05 08:22:22

0

不要,我再说一遍,不这样做,使用mysql_ *接口。切换到mysqli或PDO。它在最新的PHP版本中已被弃用。而且特别是不要混合它们!它不会工作!