如何使用jQuery ajax获取php数组数据

I am trying to get an array of data from my php function using ajax but having a difficult time. Here is my php function:

function dallas_db_facebook_make_post () {
    global $wpdb;
    $query = "SELECT * FROM wp_dallas_facebook WHERE time > NOW() ORDER BY time LIMIT 1";
    $results = $wpdb->get_results($query, ARRAY_A);

    foreach($results as $result) {
        $fbposttext = $result['text'];
        $fbposttime = $result['time'];
        $array = array('post' => $fbposttext, 'posttime' => $fbposttime);
        echo json_encode($array);

    }   

}

Here is my jQuery function:

function send_fb_post() {
    jQuery.ajax({
        type: "POST",
        url: my_ajax.ajaxurl,
        dataType: 'json',
        data: {
            'action': 'dallas_db_facebook_make_post'

        },
        beforeSend: function() {
        },
        success: function(data){
            var jq_json_obj = jQuery.parseJSON(data);
            console.log(jq_json_obj);

        },
        error: function(){
        },
    });
};
douci6541
douci6541 我试图以数组的形式从php函数中获取数据,以便在我的jQuery函数中使用。
4 年多之前 回复
dongshandun4363
dongshandun4363 您是将数据发送到php函数并期望以数组形式返回数据还是要将数组发送到php端?
4 年多之前 回复

2个回答

Some correction, you need to output the total array when for loop completes. below function will work i think

function dallas_db_facebook_make_post () {
    global $wpdb;
    $query = "SELECT * FROM wp_dallas_facebook WHERE time > NOW() ORDER BY time LIMIT 1";
    $results = $wpdb->get_results($query, ARRAY_A);

    foreach($results as $result) {
        $fbposttext = $result['text'];
        $fbposttime = $result['time'];
        $array[] = array('post' => $fbposttext, 'posttime' => $fbposttime);
    }
        echo json_encode($array);   

}
dto5637
dto5637 谢谢,但那没用。
4 年多之前 回复
function dallas_db_facebook_make_post () {
    global $wpdb;
    $query = "SELECT * FROM wp_dallas_facebook WHERE time > NOW() ORDER BY time LIMIT 1";
    $results = $wpdb->get_results($query, ARRAY_A);

    foreach($results as $result) {
        $fbposttext = $result['text'];
        $fbposttime = $result['time'];
        $array[] = array('post' => $fbposttext, 'posttime' => $fbposttime);
    }
        echo json_encode($array);   

}

Ajax call:

$.ajax({
       type: "POST",
       url: "your url",
       dataType: "json",
       data: {action: 'dallas_db_facebook_make_post'},
       success: function(response) {
           console.log(response);
       }
});

And check what you are seeing in the console. If you are using chrome as browser, right click and click on inspect element. There are you seeing the console.

I think you can get the element like: response[index]['post'];

duanmuybrtg1231
duanmuybrtg1231 不。 在这里你去imgur.com/S0esafl
4 年多之前 回复
drju37335
drju37335 它没有成功的功能?
4 年多之前 回复
duannima8347
duannima8347 实际上并没有任何成功的回报。 我可以做警报(“成功”),没有任何反应。
4 年多之前 回复
dq_609586475
dq_609586475 是的,如果这不起作用:success:function(response){console.log(response)}并在控制台中显示输出。
4 年多之前 回复
duanfan8360
duanfan8360 这是你要求的吗? success:function(response){console.log(response.post); }
4 年多之前 回复
dongxi4235
dongxi4235 这是对成功响应变量的良好反应。
4 年多之前 回复
dos8244
dos8244 是的,这是一个截图imgur.com/KVOnGeL
4 年多之前 回复
doucheng7808
doucheng7808 你说响应标签显示[{“post”:“asdf”,“posttime”:“2016-07-13 00:00:00”}]?
4 年多之前 回复
dounieqi6959
dounieqi6959 呃......没有回来。 什么都没有。
4 年多之前 回复
dqmq0654
dqmq0654 太好了! 现在你可以在你的成功中做到这一点:console.log(response.post); 我希望asl在控制台返回。
4 年多之前 回复
dongshen9058
dongshen9058 那显示[{“post”:“asdf”,“posttime”:“2016-07-13 00:00:00”}] 0这是正确的数据。
4 年多之前 回复
doutang1992
doutang1992 检查响应选项卡。
4 年多之前 回复
dongyu4455
dongyu4455 它没有显示在“表单数据”部分下发送的任何实际数据
4 年多之前 回复
dongnaoxia0927
dongnaoxia0927 我可以截取屏幕截图,但它只是说Form Data操作:dallas_db_facebook_make_post
4 年多之前 回复
dongxin8392
dongxin8392 好的,网络标签下的chrome中的请求是什么? 你可以发布截图吗?
4 年多之前 回复
douqin231881
douqin231881 控制台中没有返回任何内容。 如果我执行类似'error:function(error){console.log(error)}'的操作,那么它看起来就像数组显示在控制台中一样。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐