0

我有一个小调查,但当我提交它时,它说消息为空,我看不出我的错误在哪里。

如果你能帮我的话,我很感激。

谢谢你

带有Jquery和Ajax函数的My Form

<!DOCTYPE HTML><hmtl lang=“pt pt”><头部><title>形式;里约</title><script type=“text/javascript”src=“http://code.jquery.com/jquery-1.4.2.min.js“></script></头><body><小时/><h3>Formulario公司</h3><script type=“text/javascript”charset=“utf-8”>$(函数(){$(“#提交者”).click(function(){$.ajax(美元)({类型:“POST”,url:“validar.php”,dataType:“json”,成功:功能(消息){警报(“Mensagem”+消息消息);},错误:函数(){警报(“Ocorreu um erro”);}});});});</script><form id=“formulario”action=“”method=“post”accept-charset=“utf-8”><p>佩尔贡塔1</p><label for=“pergunta1”>sim</label><input type=“radio”id=“p1”name=“pergunta1”value=“1”/><br/><label for=“pergunta1”>n&atilde;o</label><input type=“radio”id=“p1”name=“pergunta1”value=“0”/><br/><p>佩尔贡塔2</p><label for=“pergunta2”>sim</label><input type=“radio”name=“pergunta2”value=“0”/><br/><label for=“pergunta2”>n&atilde;o</label><input type=“radio”name=“pergunta2”value=“1”/><br/><p>佩尔贡塔3</p><label for=“pergunta3”>sim</label><input type=“radio”name=“pergunta3”value=“0”/><br/><label for=“pergunta3”>n&atilde;o</label><input type=“radio”name=“pergunta3”value=“1”/><br/><p>佩尔贡塔4</p><label for=“pergunta4”>sim</label><input type=“radio”name=“pergunta4”value=“0”/><br/><label for=“pergunta4”>n和atilde;o</label><input type=“radio”name=“pergunta4”value=“1”/><br/><p><input type=“submit”id=“submiter”value=“Continue&rarr;”></p></form></body></html>

我的PHP

<?php(电话)如果($_POST){$pergunta1=$_POST['porgunta1'];$pergunta2=$_POST['porgunta2'];$pergunta3=$_POST['porgunta3'];$pergunta4=$_POST['porgunta4'];$calcular=$pergunta1+$pergunti2+$pergonta3+$pergutta4;$var=数组('mensage'=>$calcular);echo json_encode($var);}其他{$var2=数组('mensage'=>'sem resultado');echo json_encode($var2);}?>
1
  • 我不认为问题出在php代码中,但在Jquery中。。。 评论 2010年6月15日10:21

3个答案

重置为默认值
5

有两个问题。你的PHP已经完成一半了<php<?php(电话)。但实际上你应该使用json_encode(json_encode)只需用您的数据生成一个PHP数组,json_encode,它就会为您完成所有聪明的json工作。这样维护会容易得多。

另一个问题:JSON键应该是字符串。

尝试以下操作:

$result=数组();if($微积分<=9){$result['mensage']=1;}//... 等。echo json_encode($result);

编辑:我刚刚做了一个检查,以下内容对我来说很有用:

$(文档).ready(函数(){$.ajax(美元)({类型:“POST”,url:“validar.php”,dataType:“json”,成功:功能(消息){警报(“Mensagem”+消息消息);},错误:函数(){警报(“Ocorreu um erro”);}});});
1
  • 嘿,谢谢你的回答,我重新编写了代码,但firebug也出现了同样的问题:msg为null[Break on this error]alert('Mensagem'+msg.mensage); 评论 2010年6月15日10:10
1

我猜这是因为您的JSON语法不正确(查找一下,看看您遗漏了哪些引号:)。你可以使用json编码以避免您手动构建它。

还要注意,您应该从PHP响应程序提供适当的内容类型(应用程序/json). 我不知道这是否会影响jQuery的内置解析,但感觉更干净。

1
  • 谢谢,我会查一下。。。我在Perl中有一个类似的代码,没有任何问题。。。我真的不知道这里发生了什么。。谢谢 评论 2010年6月15日10:11
0

JSON需要采用PHP没有提供的严格格式。使用json_encode确保输出有效。

类似于:

<?php(电话)if(!empty($_POST)){//确保_POST存在且不为空foreach($_POST作为$key=>$val){//如果字符串“pergunta”包含在该_POST键中,则添加到总数if(strpos($key,“pergunta”)!==假){$calcular+=$val;}}//9及以下返回“1”,10或11返回“2”,12及以上返回“3”$message=($calcular<=9)?1:($calcular>9&&$calcular<=11)?2 : 3;//使用json_encode来确保我们回显的是有效的json,例如{“mensage”:1}echo json_encode(数组('mensage'=>$mensage));}?>

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.