2016-10-28 10 views
1

私は$ .post()を介してJSオブジェクトを送信しています。応答は常に文字列であるので、私は$コンテンツをエコーた場合、それがうまく機能として、私は何を得るAJAX呼び出しの後にPHP配列を返します

JS

var ajaxData = {action:"createuser"} 
$("input[required]").each(function(){ 
    var attr = $(this).attr("name"); 
    ajaxData[attr] = $(this).val(); 
}); 
$.post(
    daten.ajaxurl, 
    ajaxData, 
    function(data){ 
     alert(data[0]) 
    }   
) 

PHP

//Create a User 
add_action('wp_ajax_nopriv_createuser','createuser'); 
function createuser() { 
    foreach ($_POST as $key => $value) { 
     if(empty($value)) { 
      $type = "error"; 
      $content = "$key is empty"; 
      echo array($type,$content); 
      wp_die(); 
     } 
    } 
} 

JSONを使用して、DataTaype:JSONを追加すると、自動的にエンコードされることを知りました。

しかし、私は

+1

だけで行う 'エコーjson_encode(配列($タイプ、$コンテンツ))'。私はそれがあなたが意味することだと思います。 – Andrew

+0

@Andrew今私はオブジェクトを取得します。私はそれがJSONオブジェクトだと仮定します。どのように配列に変換できますか? –

+0

javascriptの[JSON Parse](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)を使用してjsonの情報を読み取ることができます。 – Andrew

答えて

0

wp_send_json()を使用します。機能。これはまさにあなたが探しているものです。

そして最後にwp_die()を付けることを忘れないでください。

wp_send_json():https://codex.wordpress.org/Function_Reference/wp_send_json

wp_die():https://codex.wordpress.org/Function_Reference/wp_die

+0

あなたは素晴らしいです! wp_send_json()がdie()を呼び出すため、wp_die()は必要ですか? –

+0

この関数でwp_dieを使用する必要はありません –

+0

いいえ、wp_send_json()にはdie()が含まれているため、必要ありません。しかし、それは "ベストプラクティス" - コードの1行とあなたはよく眠る:D –

1

カントーあなただけの配列をエコーすることはできません適切にPHPでそれを解読する方法は考えて、持っていません。 AJAXでは、リクエストでJSONオブジェクトを返すようにデフォルト設定されています。あなたがしたいのは、配列からJSONオブジェクトを作ることです。そのためにjson_encodeを使用することができます。その後

http://php.net/json_encode

あなたはそれでやりたいものは何でもするJS/jQueryのでJSONオブジェクトを使用することができます。

関連する問題