我现在在通过 $.ajax、json 和 PHP 发送和接收数据时遇到问题。
我有我的页面 JQM:
<div data-role="page" id="json">
<div data-role="panel" id="painelMenu">
<div data-role="content">
<a href="index.html" data-role="button">Voltar</a>
</div>
</div>
<!-- /panel -->
<div data-role="header" data-position="fixed">
<h1>WGBN Mobile</h1>
</div>
<!-- /header -->
<div data-role="content">
<p>Esta é a página 2.</p>
<p><a href="#painelMenu" data-role="button">painel</a></p>
<p><a href="#" data-role="button" class="manda">Manda</a></p>
<hr>
<div id="mostra"></div>
</div>
<!-- /content -->
<div data-role="footer" data-position="fixed">
<h4>© 2013 WGBN Software House.</h4>
</div>
<!-- /footer -->
</div>
<!-- /page -->
使用此 JavaScript 运行:
$(document).delegate("#json", "pageinit", function() {
$(".manda").click(function(e) {
$.ajax({
url : "json1.php",
dataType : "json",
data : '{"opc":"sim"}',
success : function(data){
var html = "";
for($i=0; $i < data.length; $i++){
html += "<strong>Nome:</strong> "+data[$i].nome +" "+ data[$i].sobreNome;
html += " <strong>Cidade:</strong> "+data[$i].cidade
html += "<br />";
}
$("#mostra").html(html);
}
});
return false;
});
});
我的服务器上的这个 PHP 脚本:
<?php
if ($_POST['opc'] == "sim"){
$var = Array(
array(
"nome"=>"João",
"sobreNome"=>"Silva",
"cidade"=>"Maringá"
),
array(
"nome"=>"Ana",
"sobreNome"=>"Rocha",
"cidade"=>"Londrina"
),
array(
"nome"=>"Véra",
"sobreNome"=>"Valério",
"cidade"=>"Cianorte"
));
echo json_encode($var);
}
?>
但我无法读取发送到 PHP 的数据,因此它可以在服务器上运行代码并将 JSON 返回给 clinte。
一个重要的细节,如果我在 javascrpt 中评论这一行:
$(document).delegate("#json", "pageinit", function() {
$(".manda").click(function(e) {
$.ajax({
url : "json1.php",
dataType : "json",
/*data : '{"opc":"sim"}',*/
success : function(data){
var html = "";
for($i=0; $i < data.length; $i++){
html += "<strong>Nome:</strong> "+data[$i].nome +" "+ data[$i].sobreNome;
html += " <strong>Cidade:</strong> "+data[$i].cidade
html += "<br />";
}
$("#mostra").html(html);
}
});
return false;
});
});
以及 PHP 中的这些行:
<?php
//if ($_POST['opc'] == "sim"){
$var = Array(
array(
"nome"=>"João",
"sobreNome"=>"Silva",
"cidade"=>"Maringá"
),
array(
"nome"=>"Ana",
"sobreNome"=>"Rocha",
"cidade"=>"Londrina"
),
array(
"nome"=>"Véra",
"sobreNome"=>"Valério",
"cidade"=>"Cianorte"
));
echo json_encode($var);
//}
?>
我已经在我的正常返回 JQM 页面中显示。
如何让 PHP 识别通过 JSON 发送的数据?这只是一个测试,因为解决这个问题我将 $.ajax 的完整表单发送到 PHP 保存在数据库中,这种情况下的方法论 POST 是必要的。