My WordPress AJAXプロセスが正常に終了しましたが、返されたJSONオブジェクトはChrome Devtoolsに次のエラーを表示しています:Uncaught TypeError:なぜこれが起こっているのか分かりません。解析されたJSONデータがオブジェクトとして出力されていますが、正しいはずです。すべてのJavaScriptコードとPHPコードは以下のとおりです。サンプルの有効なJSONオブジェクトは、https://jsfiddle.net/roaq9ew1/に表示されます。jQueryのAJAX JSONリクエストのキャッチされていないタイプのエラー
/**
* Create 'Get Registration' button and append to vehicle-registration list item
*/
var getRegoButton = document.createElement('button');
getRegoButton.setAttribute('id', 'get-rego');
getRegoButton.setAttribute('class', 'get-rego');
getRegoButton.innerHTML = 'Get Registration';
var vehicleRegistrationWrapper = document.getElementById('field_2_6');
vehicleRegistrationWrapper.appendChild(getRegoButton);
/**
* Function to retrieve Carjam API data via AJAX
*/
jQuery(document).ready(function($){
$(".vehicle-details").hide();
$("#get-rego").click(function(e){
e.preventDefault();
$(".vehicle-details").show();
plate = $("#input_2_6").val();
$.post(
"/wp-admin/admin-ajax.php",
{
"action": "get_vehicle",
"plate": plate,
},
function(response) {
obj = JSON.parse(response);
console.log(typeof obj);
console.log(obj.idh.vehicle);
}
);
});
function populateVehicleDetails(vehicleDetail, apiData) {
var carData = ".vehicle-details span id="+vehicleDetail+"";
$(carData).val(apiData);
}
});
/**
* Function to handle API call to Carjam for vehicle registration data
*/
add_action('wp_ajax_get_vehicle', 'prefix_ajax_get_vehicle');
add_action('wp_ajax_nopriv_get_vehicle', 'prefix_ajax_get_vehicle');
function prefix_ajax_get_vehicle() {
$plate = $_POST["input_2_6"];
$testApikey = "C9DBAF2CD487DE38EC1AE78C09329E6711BF644C";
$testApiUrl = "http://test.carjam.co.nz/api/car/?plate=";
$url = $testApiUrl.$plate."&key=".$testApiKey;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
$oXML = new SimpleXMLElement($data);
echo json_encode($oXML);
wp_die();
}
テスト用に変更しましたが、同じエラーが残ります。 –
ええ、あなたのajaxコードにもいくつかのエラーがあります。私はより多くの情報で私の答えを更新しました。 – miknik
答えとコードをありがとう。私はその一部を実装しており、スクリプトは現在動作しています。 –