jQuery, Ajax, JSON, PHP ve ParserError

3 Cevap php

I $.ajax in jQuery kullanarak bir PHP bir formu göndermek için çalışıyorum. Ben yanıt almak çalıştığınızda, ben 'ParserError' olsun, JSON gibi her şeyi gönderebilirsiniz, ancak. Ben yanlış ne yapıyorum?

jQuery fragmanı:

$("form").submit(function(){
    $.ajax({type: "POST",
        url: "inscrever_curso.php",
        data: {cpf : $("input#cpf").val(),nome : $("input#nome").val()},
        dataType: "json",
        success: function(data){
            alert("sucesso: "+data.msg);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert ("erro: "+textStatus);
        }
    });
    return false;
});

PHP:

<?php
    $return[msg]="Testing, testing.";
    echo json_encode($return);
?>

3 Cevap

Bu sorunun nedeni ise bilmiyorum, ama burada PHP kodu hakkında bir şey:

$return[msg]="Testing, testing.";
echo json_encode($return);

E_NOTICE error_reporting düzeyi ile, bu yapıyor olsun:

Notice: Use of undefined constant msg - assumed 'msg'

Bildirimleri etkin ve sunucu üzerinde gösterilir, geçerli JSON (çıkışına JSON dizesi önce hata mesajı içerir) olmayan bir çıkış neden edecektir.


To avoid that notice, you must use this syntax:

$return['msg']="Testing, testing.";
echo json_encode($return);

Oluşturduğunuz dizi-elemanının önemli bir dize sabit olduğu, bu nedenle, bu tırnak içine alınır: çevresindeki tırnak msg Not.

Bu tırnak koymak istemiyorsanız, "msg" olarak adlandırılan bir defined sabiti, PHP aramalar hangi muhtemelen yok.

Why is $foo[bar] wrong? : Bu konuda daha fazla bilgi için, kılavuzun bu bölümünde de bir göz atabilirsiniz.

(Ben sizin sorununuzu çözmek olacak emin değilim, ama yine de bilmek güzel.)

PHP kodu muhtemelen olmalıdır:

<?php
    $return = array();
    $return['msg']="Testing, testing.";
    echo json_encode($return);
?>

Ben sadece ne olduğunu öğrendim: Ben dostu URL'ler için bir .htaccess senaryo var ve bu doğru PHP dosyası arıyor, ama yanlış dizinde. Ben sadece URL dosya önce '/' eklenir ve sonra çalıştı.