2017-03-28 21 views
1

register()に渡されたすべての引数が値を持つことは確かです。これはjsコードです。SyntaxError:予期せぬトークン<JSON.parse(<anonymous>)の位置0のJSONで - AngularJS

$scope.register = function(
    $reg_code, $prov_code, $citymun_code, $brgy_code, $street, 
    $user_name, $user_email, $user_contact, $user_password 
) { 
    //displays the arguments 
    alert("region: " + $reg_code + ", province: " + $prov_code + ", citymun: " + $citymun_code + ", barangay: " 
    + $brgy_code + ", street: " + $street + ", user_name: " + $user_name + ", user_email: " + $user_email + ", user_contact: " 
    + $user_contact + ", user_password: " + $user_password); 

    $http({ 
     method: "POST", 
     url: "http://" + host + "/mobile/register.php", 
     data: JSON.stringify({ 
      user_password_reg: $user_password, 
      user_email_reg: $user_email, 
      user_contact_reg: $user_contact, 
      user_name_reg: $user_name, 
      region: $reg_code, 
      province: $prov_code, 
      citymun: $citymun_code, 
      barangay: $brgy_code, 
      street: $street, 
      echo: "1", 
      success: "0", 
      user_acc_type: "log account" 
     }), 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }).then(function(res) { 
      alert("success1: " + res.data.success1 + ", success2: " + res.data.success2 + ", success3: " + res.data.success3); 
    }); 


} 

これはPHPスクリプト

<?php 
    header('Access-Control-Allow-Origin: *'); 
    header('Content-Type: application/json; charset=utf-8'); 

    //converts data to post 
    $postData = file_get_contents("php://input"); 
    $post = json_decode($postData); 


    $echo = array(); 
    $echo["success1"] = 0; 
    $echo["success2"] = 0; 
    $echo["success3"] = 0; 

    if(isset($post["region"]) && 
     isset($post["province"]) && 
     isset($post["citymun"]) && 
     isset($post["barangay"]) && 
     isset($post["street"]) && 
     isset($post["user_password_reg"]) && 
     isset($post["user_name_reg"]) && 
     isset($post["user_email_reg"]) && 
     isset($post["user_contact_reg"]) 
    ) { 
     $echo["success1"] = 1; 
     $echo["success2"] = 1; 
     $echo["success3"] = 1; 

    } else { 

     $echo["success1"] = 2; 
     $echo["success2"] = 2; 
     $echo["success3"] = 2; 
    } 

    echo json_encode($echo); 
?> 

このプログラムはまだ完全ではないです。私はまず、PHPが投稿からすべての適切なパラメータを取得しているか、またはechoが正しい値を返していることを確認したかったのです。しかし、これらのコードでは、コンソールでこのエラーが発生します。

SyntaxError: Unexpected token < in JSON at position 0 
    at JSON.parse (<anonymous>) 
    at fromJson (ionic.bundle.js:9892) 
    at defaultHttpResponseTransform (ionic.bundle.js:17406) 
    at ionic.bundle.js:17491 
    at forEach (ionic.bundle.js:9150) 
    at transformData (ionic.bundle.js:17490) 
    at transformResponse (ionic.bundle.js:18216) 
    at processQueue (ionic.bundle.js:22016) 
    at ionic.bundle.js:22032 
    at Scope.$eval (ionic.bundle.js:23228) 

<はPHPのJSON出力で読み出される場合、それは、PHPコードの一部にエラーが発生したことを意味します。 AngularJSが自動的にPHPからデータを解析するので、PHPコードをデバッグするのはかなり難しいです。したがって、私はエラーの詳細を見ることができません。また、私はこの単純なPHPスクリプトにはエラーがあることを本当に疑っています。

ありがとうございます。

+0

ブラウザの* Network *コンソールで応答を確認してください。 JSONデータを 'application/x-www-form-urlencoded'としてPOSTするのはなぜですか?要求を*シンプルに保つためには、 'text/plain'と一緒に行ってみましょう。 – Phil

+0

' x-www-form-urlencoded'の使い方が不明です。 –

+0

あなたは書き込み – Phil

答えて

2

あなたのPHPコードによって、おそらくHTMLレスポンスが発生する可能性があります。

これはhttp://php.net/manual/function.json-decode.php#refsect1-function.json-decode-parameters

を参照してください

$post = json_decode($postData, true); 

Fatal error: Cannot use object of type stdClass as array

変更あなたのコードのようなものをトリガー、原因あなたは配列インデックスとしてオブジェクトのプロパティにアクセスしようとしているという事実による可能性が最も高いです


私はまたあなたがContent-Type: application/x-www-form-urlencodedを使用していると仮定しますo要求を維持するsimple。あなたのデータは確かにURLエンコードされていないので、代わりにtext/plainをお勧めします。

$http.post("http://" + host + "/mobile/register.php", { 
    user_password_reg: $user_password, 
    user_email_reg: $user_email, 
    user_contact_reg: $user_contact, 
    user_name_reg: $user_name, 
    region: $reg_code, 
    province: $prov_code, 
    citymun: $citymun_code, 
    barangay: $brgy_code, 
    street: $street, 
    echo: "1", 
    success: "0", 
    user_acc_type: "log account" 
}, { 
    headers: { 'Content-type': 'text/plain' } 
}) 
+0

私はそれを試してみましょう。ありがとうございます。 –

+0

最終的に働いてくれてありがとうございました:) hehe。 –

関連する問題