0

投稿されたフォーム フィールドから JSON リクエストを作成する次の PHP コードがあります。

<?php
if ( isset($_POST['data']['Affiliate'])) { //Where ['data']['Affiliate'] is an array of posted field names of the form.
    $data = $_POST['data'];

    $base = 'https://api.whatever.com/Api?';

    $params = array(
        'Format' => 'json'
        ,'account' => $data['Affiliate']
    );

    $url = $base . http_build_query( $params );
    $result = file_get_contents( $url );
    $result = json_decode( $result );

    echo "<pre>";
    print_r( $result );
    echo "</pre>";
?>

print_r( $result )以下を出力します。

stdClass Object
(
    [request] => stdClass Object
        (
            [Format] => json
            [account] => stdClass Object
                (
                    [country] => US
                    [address1] => asdasd
                    [city] => asdasd
                    [zipcode] => asdasd
                    [phone] => asdasd
                )
        )

    [response] => stdClass Object
        (
            [status] => -1
            [data] => 
            [errors] => Array
                (
                    [0] => stdClass Object
                        (
                            [err_code] => 3
                            [err_msg] => A user already exists with this email address.
                            [attribute_name] => Email
                            [publicMessage] => User account or user is not valid.
                        )
                    [1] => stdClass Object
                        (
                            [err_code] => 1
                            [err_msg] => City cannot be blank.
                            [attribute_name] => city
                        )
                )
        )
)

JQuery Ajax を使用して同じ結果を達成し、<li>タグ内のエラーの配列を出力するにはどうすればよいですか。

4

2 に答える 2

3
var errorsArr='';
var affiliate='';
//affiliate is your data of $data['Affiliate'] which you can get using jquery or js..
$.ajax({
    url:'https://api.whatever.com/Api?'
    data:{Format: 'json',account : affiliate},
    dataType:'json',
    success:function(data){
      errorsArr=data.response.errors;
    }
  }
});

errorsArrですべてのエラーが発生します。これはjson配列であり、目的の出力のために反復することができます

于 2012-09-22T06:54:24.687 に答える
0

ここで行ったようにJSONをPHPオブジェクトにデコードしないことをお勧めしますが、純粋なJSONを保持し、それをAJAXリクエストに渡してから、クライアント側でデコードを実行します(特別なjqueryajax関数があります。すでにデコードします。それについてはRaviの回答を参照してください)

しかし、これを行いたくない場合は、取得したオブジェクトのフィールドにアクセスしてみませんjson_decode()か?
それ$result->$response->$errorsがあなたが探しているエラーの配列だと思います。

于 2012-09-22T06:55:56.917 に答える