Jquery 如何通过AJAX和JSON将数组从PHP转换为JAVASCRIPT?
有人能帮我吗?看起来我得到的是字符串而不是数组。 一旦我通过AJAX将数组(这是sql查询的结果)从PHP传递到Javascript,我想循环数组并在表单中填充一些字段。 我发布代码: JAVASCRIPTJquery 如何通过AJAX和JSON将数组从PHP转换为JAVASCRIPT?,jquery,json,ajax,wordpress,Jquery,Json,Ajax,Wordpress,有人能帮我吗?看起来我得到的是字符串而不是数组。 一旦我通过AJAX将数组(这是sql查询的结果)从PHP传递到Javascript,我想循环数组并在表单中填充一些字段。 我发布代码: JAVASCRIPT (function($){ $(document).ready(function() { $('#input_12_153').change(function (){ if ($('#input_12_153').attr("value")==
(function($){
$(document).ready(function() {
$('#input_12_153').change(function (){
if ($('#input_12_153').attr("value")== 'no-selection'){
$('#input_12_48').val( '' );}
else{
var valor = $('#input_12_153').attr("value");
jQuery.ajax({ // We use jQuery instead $ sign, because Wordpress convention.
url : '/optcat/wp-admin/admin-ajax.php', // This addres will redirect the query to the functions.php file, where we coded the function that we need.
type : 'POST',
data : {
action : 'my_action',
fieldvalue : valor,
},
success: function(data) {
alert( data );
//Here I would like to loop the array and get the values
}
});
}
});
});
})(jQuery);
PHP(Functions.PHP)
用于将PHP中的字符串转换为数组
success: function(data) {
var results = JSON.parse(data); // like this
alert( data );
//Here I would like to loop the array and get the values
}
在我的例子中,不需要使用
JSON.parse(数据)代码>,否则我会得到一个错误“JSON中位置1处的意外标记o”
只需输入数据类型:“json”
就足够了。
我发布我的最终代码:
functions.php
add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' ); // This lines it's because we are using AJAX on the FrontEnd.
function my_action(){
global $wpdb;
$tablename = $wpdb->prefix . 'rg_lead_detail';
$lead_id = $_POST['fieldvalue']; // This variable will get the POST 'fieldvalue'
$form_id = 21;
$sql = "SELECT value FROM $tablename WHERE lead_id = %d AND form_id= %d";
$results = $wpdb->get_results( $wpdb->prepare( $sql, $lead_id, $form_id ), ARRAY_A );
echo json_encode($results,JSON_FORCE_OBJECT);
}
add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' ); // This lines it's because we are using AJAX on the FrontEnd.
function my_action(){
global $wpdb;
$tablename = $wpdb->prefix . 'rg_lead_detail';
$lead_id = $_POST['fieldvalue']; // This variable will get the POST 'fieldvalue'
$form_id = 21;
$sql = "SELECT value FROM $tablename WHERE lead_id = %d AND form_id= %d";
$results = $wpdb->get_results( $wpdb->prepare( $sql, $lead_id, $form_id ), ARRAY_A );
echo json_encode($results);
die();
}
Javascript
(function($){
$(document).ready(function() {
$('#input_12_153').change(function (){
if ($('#input_12_153').attr("value")== 'no-selection'){
$('#input_12_48').val( '' );}
else{
var valor = $('#input_12_153').attr("value");
jQuery.ajax({ // We use jQuery instead $ sign, because Wordpress convention.
url : '/optcat/wp-admin/admin-ajax.php', // This addres will redirect the query to the functions.php file, where we coded the function that we need.
type : 'POST',
data : {
action : 'my_action',
fieldvalue : valor,
},
dataType:'json',
success: function(data) {
//var results = JSON.parse(data); // like this
$(data).each(function(i,val){
$.each(val,function(k,v){
alert(k+" : "+ v);
});
});
}
});
}
});
});
})(jQuery);
在php中添加正确的标题
-标题('Content-Type:application/json')
或指定ajax中返回的数据类型-dataType:'json',
addinjsdataType:'json',
我同意@guradio。由于您将数据作为json编码的数据从PHP发送到Javascript,因此在ajax中添加dataType:“json”
将自动将数据解析为对象。json\u encode
返回一个json编码的字符串,您需要使用json.parse()
将该字符串转换为数组,dataType
没有太大区别。谢谢你的回答,但我得到:未捕获的语法错误:JSON中的意外标记o位于Object.complete(csu.js?ver=170505-82345:77)的JSON.parse()的JSON.parse()的位置1,位于Object.fireWith的I(jquery.js:2),位于y(jquery.js:4)的XMLHttpRequest.c(jquery.js:4)在哪里调用my_action()
?my_action是wordpress的functions.php文件中的一个函数。当选择一个下拉字段时,我调用我的_操作,将var传递给进行sql查询的函数,并将结果与数组一起发送回javascriptconsole.logdata
以查看它是否为空。如果我将数据类型设置为“json”,我需要将操作从成功更改为完成,否则它不会执行任何操作。。如果我删除数据类型:“json”,即使操作成功,它也会工作。数组不是空的。我不理解这种行为。。这里是我可以在控制台中看到的值:“[{”值“:“ASSL u33”},{”值“:“Padova”},{”值“:“Pagetta”},{”值“:”info@pagetta4500.it},{“值”:“Sruffo”},{“值”:sruffo@opt-ita.com“}]0“是的,此解决方案非常有效!非常感谢您的支持:)