2017-02-07 19 views
0

[送信]ボタンをクリックすると、ajax投稿要求があります。しかし、返されたjson値はその中に ""しかありません。 .done()ajaxが起動したときにconsole.log(data)さえ動作しません。php cUrlから返されたAjaxには値がありません

<form id="form" action="#"> 
    <input type="email" placeholder="email" id="account_name" name="account_name" value="[email protected]"> <br> 
    <input type="text" placeholder="First Name" id="first_name" name="first_name" value="volvo"><br> 
    <input type="text" placeholder="Last Name" id="last_name" name="last_name" value="volva"><br> 
    <input type="submit" name="submit" id="btn"/> 
</form> 

    <script type="text/javascript"> 
     $(function(){ 
      var btn = $("#btn"); 
      var form = $("#form"); 
      var accName =$("#account_name").val(); 

      form.on("submit",function(evt){ 
       evt.preventDefault(); 
       var myReq = $.ajax({ 
        method:"POST", 
        url:"create.php", 
        dataType: 'json', 
        data: "account_name="+accName 
       }); 
       myReq.done(createAcct); 
      }); 

      function createAcct(data){ 
       console.log(data); 
       var a = JSON.parse(data); 
       console.log(typeof a); 

      }  
     }); 
    </script> 

返されるjsonは、この{"ac": ""}配列のレスポンスタブです。 ここに私のPHPのカールが

$ca = createAcct($_REQUEST['account_name']); 

$data = ["ca"=>"$ca"];//should be the email 
print json_encode($data); 
echo $data; 

function createAcct($email_account){ 
    $data = '{"account_name":"'.$email_account.'"}'; 
    $ch = curl_init(); 

    //Set cURL parameters to perform API Call 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_URL, "https://api.website.com/api/accounts/create"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_USERPWD, API_USER.':'.API_PASS); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
    $statusCode = curl_getinfo($ch,CURLINFO_HTTP_CODE); 

    $output = curl_exec($ch); 
    $err = curl_error($ch); 
    if ($statusCode == 204) { 
     return $email_account; 
     curl_close($ch); 
    } else { 
     curl_close($ch); 
    } 

} 

答えて

0

あなたはそれがこの

$.ajax({ 
    method:"POST", 
    url:"call.php", 
    dataType: 'json', 
    data: "account_name="+accName 
}).done(function(data) { 
    createAcct(data); 
}); 
のようなAJAXとの直接の応答を得るためのより良い方法のものより

echo json_encode($data); 

print json_encode($data);  
echo $data; 

を変更まず第一です

createAcct機能であなたはあなたがまた行わ機能の

success : function(data) { 
    createAcct(data); 
} 
を置き換えるAJAXの成功を使用することができます応答

function createAcct(data){ 
    console.log("f"); 
    console.log(data); 
    console.log(data['ca']); 
    console.log(typeof data); 
} 

を取得します

関連する問題