回调函数Jquery / javascript返回一个数组

时间:2014-11-18 21:09:48

标签: javascript jquery ajax

我不知道我是否以错误的方式做到这一点,但我无法想到另一种方法。

我在php中有一个函数,我用$ .post调用它,我希望它返回一个数组。听起来我需要使用回调函数,我尝试但它不会工作。

以下是代码:

Jquery的:

$("#e_del_date_btn").click(function(){
    var new_date = $("#edited_del_date").val();
    if (new_date == '') {new_date = $("#edited_del_date").attr("placeholder");}
    var new_time = $("#edited_del_time").val();
    var non = $("#non").html();
    function getarray(new_date, new_time, non, callback) {
        $.post('http://localhost:8080/wsad2/post.php',{'new_date':new_date,'new_time':new_time,'non':non}, function(data) {
            callback(data);
        });
    }
    getarray(new_date,new_time,non, function(data) {
        alert(data[0]);
        $("#odi_span").html(data[0]);
        $("#e_del_date_pencil").attr("value",data[1]);
        $("#e_del_date_pencil").attr("value2",data[2]);
    });
    $("#e_del_date").hide();
    $("#e_del_date").css("z-index","0");
    $("#po_main_div_test").css({ opacity : 1.0 });
});

PHP代码:

$returndata = array();
$returndate = $returntime = $returntext = '';

if ($fail == "false") {if ($row['complete'] == "no") {$returntext .= '(When Completed) ';}}
$returntext .= 'This order is scheduled to be delivered on<br>';
if ($fail == "false") {$returntext .= $new_date_2;$returndate = $new_date_2;} else {$returntext .= $orig_deldate;$returndate = $orig_deldate;}
$returntext .= ' between ';
if ($fail == "false") {$returntext .= $new_time_2;$returntime = $new_time_2;} else {$returntext .= $orig_time;$returntime = $orig_time;}
if ($fail == "true") {$returntext .= '<br>The New Delivery Date must be tomorrow or later.';}

$returndata[0] = $returntext; 
$returndata[1] = $returndate; 
$returndata[2] = $returntime; 

//echo ($returntext);

return $returndata;

从我读过的一些事情中我可能试图使用$ .post不正确,但基本上我需要传递日期/时间变量然后让php返回值但是它们可以在PHP代码(这是编辑交付日期/时间的重点)所以我需要从PHP发送的值返回到JavaScript,如果它被更改,所以我可以更新属性,以防他们决定更改它再次没有刷新页面。

我的问题是,警报总是空白的(警报是出于测试目的)并且基本上SEEMS正在工作,但是getarray()函数中的3个jquery调用似乎没有触发,或者它们是他们没有工作。现在,无论我做什么,我更新的HTML字段都不会改变。

我是不正确使用回调功能的?我真的需要$ .post来返回一个数组,而不仅仅是echo数据,这样我就可以更新多个字段而不只是一个。

另外,我没有遗漏一些PHP代码,因为我认为它不相关。我只想展示数组的创建,并填充数据。

2 个答案:

答案 0 :(得分:2)

您可以使用带有JSON的PHP回显数组:

PHP: http://php.net/manual/en/function.json-encode.php

使用Javascript:

http://api.jquery.com/jquery.parsejson/

此外:如何使用JQuery发送正确的POST请求:

$.ajax({
   url: "test.php",
   data: {my_$_Post1: "value"}
}).done(function() {
   //whatever you want to do
});

或( NOT RECOMMANDED ):

Answer = $.ajax({
   url: "test.php",
   async: false
   data: {my_$_Post1: "value"}
});
alert(Answer);

http://api.jquery.com/jquery.ajax/

答案 1 :(得分:1)

一种选择是将PHP代码中的数据打印为JSON(JavaScript)数组。然后在JavaScript代码中使用JSON.parse()来解析文本并将其转换为数组。