0

我现在在通过 $.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>&copy; 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 是必要的。

4

4 回答 4

2

尝试像这样发送您的数据 -

 data : { opc : 'sim' },

并设置请求类型POST

type: 'post',
于 2013-06-29T21:18:07.053 回答
2

您想将对象作为参数传递,而不是字符串:

data : {opc: "sim"},

并将类型设置为 POST:

type: 'post',
于 2013-06-29T21:18:36.693 回答
1

您缺少该type属性。.ajax 的默认类型是get,添加type: 'post'

$.ajax({
        url : "json1.php",
        type: 'post',
        dataType : "json",
        data : '{"opc":"sim"}',
        success : function(data){
于 2013-06-29T21:19:52.890 回答
0
$.ajax({
type: 'post',
..
.
.
});

你忘记了类型。默认的ajax请求是get。但是您正在检查 POST 中的 php。

于 2013-06-29T21:19:37.260 回答