2016-11-01 5 views
1

これはAJAXを初めて使用しようとしたときです。ユーザーが特定のフォームフィールド(VIN)を残している間、Webサイトは実行時にPHPを呼び出す必要があります。このフィールドの値を検証と処理のためのPHP関数に渡します。 PHPは3つの異なるフォームフィールドに対して3つの値を返さなければなりません。 これは私の問題です.3つの値をJavaScriptに戻すことはできません。私のPHPでECHOを使用すると、jquery.ajaxがPHPに失敗する

PHPでECHO json_encodeを使用するたびに、AJAX呼び出しがクラッシュし、コンソールに「VM7190:1 Uncaught SyntaxError:予期しないトークンYがJSONの位置0(...)」に表示されます。

PHPに他の単純なECHOを置くと、AJAX呼び出しがエラーで返されます。

PHPから各ECHOを削除すると、AJAX呼び出しは成功として返されますが、返されるデータはNULLです。

私はここでこの問題の解決策を得ることができればすばらしいことでしょう。

誰でもサイトをテストしたい場合 - これはURLです:mycarbio

はどうもありがとうございました。

これは私のAJAX呼び出しです:

function decode_my_vin(myvin) { 
 

 
alert("in decode_my_vin"); 
 
dataoneID = '123'; 
 
dataoneKEY = 'xyz'; 
 

 
jQuery.ajax(
 
    { 
 
    cache: false, 
 
    type: 'POST', 
 
    url: '/wp-content/themes/Impreza-child/vin-decoder.php', 
 
\t dataType:'json', 
 
    data: { 
 
\t \t \t 'value1_VIN': \t myvin, 
 
\t \t \t 'value2_ID': \t dataoneID, 
 
\t \t \t 'value3_KEY': \t dataoneKEY, 
 
\t \t \t 'value4_Year': \t ' ', 
 
\t \t \t 'value5_Make': \t ' ', 
 
\t \t \t 'value6_Model': \t ' ' 
 
\t \t }, 
 
// \t async: false, 
 
\t success: function(response) { 
 
\t \t \t var obj = jQuery.parseJSON(response); 
 
\t \t \t alert("success returned: " + obj); 
 
\t \t  document.getElementById("fld_7290902_1").value = "2015"; 
 
\t  \t document.getElementById("fld_1595243_1").value = "Ford"; 
 
    \t \t document.getElementById("fld_7532728_1").value = "Focus"; 
 
\t \t \t return; 
 
\t \t }, 
 
\t error: function() { alert("error in der jquery"); } 
 
    }); 
 
}

そして、これはこれはあなたの唯一の問題ではないかもしれないが、私のPHP

<?php 
 
    header('Content-Type: application/json'); 
 

 
\t $resultYear = '2010'; 
 
\t $resultMake = 'Ford'; 
 
\t $resultModel = 'Focus'; 
 
\t 
 
    $vinResult = array("Year: ", $resultYear, "Make: ", $resultMake, "Model: ", $resultModel); 
 

 
\t echo json_encode($vinResult); 
 
?>

+1

最初に、あなたの名前と変数の両方を二重引用符で囲みます: 'array(" Year: "=>" $ resultYear "、" Make: "=>" $ resultMake "、" Model: "=> "$ resultModel"); ( '=>'はキー=>値の代入であり、 '、'ではありません)。 – junkfoodjunkie

+0

'jQuery.parseJSON(response)'という行は必要ありません。PHPの配列で呼び出されたときに値を代入するだけです。 'response.Year'など。 –

+0

ありがとうございます。私はparseJSONを削除し、私の値をPHPのキーに割り当てた方法を変更しました。働いた! – nicecap

答えて

1

ですあなたはtr JSONのレンダリング時に連想配列を使用します。

$vinResult = array(
    'Year' => $resultYear, 
    'Make' => $resultMake, 
    'Model' => $resultModel 
); 

現在、プロパティ名と値を組み合わせています。

+0

私はこれがあなたの問題を要約していると信じています。+1 – jaggedsoft

関連する問題