2012-01-06 10 views
0

PHPからJavascriptに連想配列を送信しようとしています。しかし、なんらかの理由で、出力は未定義です。JSONを使用してPHPからJavascriptへの連想配列

PHP(Suppositional配列):

$validationErrors = array("unregisteredName" => NULL, 
"unregisteredEmail" => "Invalid e-mail", "unregisteredUsername" => NULL, 
"unregisteredPassword" => NULL); 

$log = array("errors" => $validationErrors); 
echo json_encode($log); 

Javascriptを:ここでは、コードです

var addUserCallback = function(data) { 
    if(data.errors && data.errors.length) { 
     $.each(data.errors, function(index, error) { 
      console.log(error); 
      $("#"+index).attr("placeholder", error); 
     }); 
    } 
    else { 
     window.location="https://stackoverflow.com/users/success/"; 
    } 
}; 

var errorCallback = function(xhr, status, error) { 
    console.log(arguments); 
}; 

self.addUser = function() { 
    var data = { 
     unregisteredName: $("#unregisteredName").val(), 
     unregisteredEmail: $("#unregisteredEmail").val(), 
     unregisteredUsername: $("#unregisteredUsername").val(), 
     unregisteredPassword: $("#unregisteredPassword").val() 
    }; 
    $.post(addUserUrl, data).success(addUserCallback) 
     .error(errorCallback); 
} 

そして、ここで私がChromeのインスペクタから得るものです:

データ:"↵{"errors":{"unregisteredName":null,"unregisteredEmail":"Invalid e-mail.","unregisteredUsername":null,"unregisteredPassword":null}}"
data.errors:Undefined

だから、何が起こっていることでもあるため、常に「成功」​​ページにリダイレクトフォーマットされていないという事実を、「データ」の変数に関するデータを取得し、ということです。

アイデア?

+0

に成功コールバックを渡しますけれども。 JSON文字列を解析し、まずオブジェクトを抽出する必要があります。 – Crontab

答えて

6

jQueryにJSON文字列を解析するように指示する必要があります。

$.post(addUserUrl, data, 'json').success(addUserCallback).error(errorCallback); 

`data`が文字列なので、私は通常$.post

$.post(addUserUrl, data, addUserCallback, 'json').error(errorCallback); 
+0

また、実際にjQuery AJAXを使用しない場合は、「JSON.parse」を参照してください。 –

+2

JSONを返すときにコンテンツタイプとしてapplication/jsonを設定することもお勧めします(jQueryではデータ型なしで理解できるかもしれませんが、両方を行う方がよい)。 – Daff

+0

私は思ったよりも簡単に道を渡った。私は '$ .post'に" json "を入れようとしましたが、私は成功コールバックを外部に渡していました...おそらくパラメータを理解していなかったでしょう。どうもありがとうございました。 – Falassion

関連する問題