2016-12-08 2 views
0

Ich habe eine PHP-Datei, um ein Formular mit Daten zu validieren, die durch Ajax gesendet werden müssen. Die Daten, die ich von der PHP-Datei zurückerhalte, bleiben unverändert, wie kann ich die richtigen Daten erhalten? main.jsAJAX Post Daten von PHP-Datei

$("#PersonForm").submit(function() 
{ 
    var data = $("form").serializeArray(); 
    $.ajax({ 
    type:"post", 
    url:"main.php", 
    act: 'validate', 
    datatype:"json", 
    data:data, 
    function(data){ 
     console.log(data); 
    }}); 

    return false; 
}); 

main.php

else if ($_REQUEST['act'] == 'validate') 
{ 
    $validateData = array(); 

    if (preg_match("[A-Za-z]{3,20}$/",$_REQUEST['name'])){ 
     $validateData['name'] = 1; 
    }else{ 
     $validateData['name'] = 0; 
    } 

    echo json_encode($validateData); 

Die Daten, die Name ist in dem Datenfeld wird ursprünglich gesendet: Bob
Der erwartete Ertrag 1 oder 0 ist, aber ich empfangen name: Bob zurück.

+1

Was macht das? '$ _REQUEST ['act'] == 'validate' 'Gibt es jemals diese else if-Anweisung? – kyle

+0

Ja, was ist die Bedingung für die "if" Aussage dazu? –

+0

Ich denke, dass Akt fehlt von den Daten, die Sie über Ajax – Andreas

Antwort

2

Ok, das Problem ist, dass Sie das in der data übergeben müssen. Sie tun dies:

$.ajax({ 
    type:"post", 
    url:"main.php", 
    act: 'validate', // <--- THIS IS WRONG 
    datatype:"json", 
    data:data,  // <--- IT SHOULD BE IN THIS 
    function(data){ 
     console.log(data); 
    } 
}); 

Es ist in Ihrem data Variable sein muss, übergeben werden. Sie verwenden es als eine Option für die Methode jQuery ajax(), die nicht funktioniert.

var data = $("form").serializeArray(); 
data.push({name: 'act', value: 'validate'}); 
// Then make ajax call here 

Nachdem Sie Ihre Formulardaten serialisiert haben, können Sie diese als zusätzlichen Wert hinzufügen.