不能使用数据变量中的字符串.split(" /");

时间:2014-03-17 21:28:47

标签: javascript php jquery

这已经困扰了我的大脑2天了,没有任何运气,我想我会问这里。我遇到的问题是,在从ajax请求中获取字符串并将其保存到变量后,警报会正确显示" 1/2/3/4"但是,当我使用var array = variable.split('/');进行拆分并尝试访问数组内容时,它只显示数组长度为1且该数据为空。在字符串之前使用了警报,以确保字符串保存所需的内容。任何帮助,将不胜感激。

我的代码如下:

HTML:

var Cid = calEvent.Cid;
            $(".titleU").val(calEvent.title);
            $('.startDateU').val($.fullCalendar.formatDate(calEvent.start, "yyyy-MM-dd HH:mm"));
            $('.endDateU').val($.fullCalendar.formatDate(calEvent.end, "yyyy-MM-dd HH:mm"));
            $(".descriptionU").val(calEvent.description);
            $(".clientU").val(calEvent.clientName);
            $(".workOrderU").val(calEvent.workOrderID);
            $(".jobLocationU").val(calEvent.eventLocation);
            // For loop for adding employee to update panel
            var workOrderEmployeesA = ""; // Update form
            $.ajax({
                type: "POST", 
                url: "<?php echo base_url('scripts/phpScripts/getEmployeesCID.php');?>", 
                data: {Cid: Cid},
                datatype: "html",
                success: function(json){
                    workOrderEmployeesA = $.trim(json).substring(0, json.length -1);
                    alert(workOrderEmployeesA);
                }
            });         
            var workOrderEmployeesB = workOrderEmployeesA.toString().split('/');
            for(var i=0;i<workOrderEmployeesB.length;i++){
                alert(workOrderEmployeesB[i]);
            }

PHP:

    $result = mysqli_query($con,"SELECT * FROM employeeCalendar WHERE CalendarID='$_POST[Cid]'");
$counter = 0;
while($row = mysqli_fetch_array($result)){
    echo $row['EmployeeID'];
    if($counter == mysqli_num_rows($result)){
    }else{
        echo "/";
    }
        $counter++;
}
mysqli_close($con);

以下代码可以正常工作,但不确定它的不同之处会妨碍正常运行。

var workOrderEmployeesB = "1/2/3/4/5".split('/');
            for(var i=0;i<workOrderEmployeesB.length;i++){
                alert(workOrderEmployeesB[i]);
            }

这可能是我看过的傻事,任何建议都会非常感激。

提前谢谢你,

克里斯

2 个答案:

答案 0 :(得分:0)

尝试在Ajax成功调用中调用循环

$.ajax({
            type: "POST", 
            url: "<?php echo base_url('scripts/phpScripts/getEmployeesCID.php');?>", 
            data: {Cid: Cid},
            datatype: "html",
            success: function(json){
                workOrderEmployeesA = $.trim(json).substring(0, json.length -1);
                alert(workOrderEmployeesA);
                 var workOrderEmployeesB = workOrderEmployeesA.toString().split('/');
                 for(var i=0;i<workOrderEmployeesB.length;i++){
                  alert(workOrderEmployeesB[i]);
                 }
            }
        });         

答案 1 :(得分:0)

这是因为你在AJAX调用之外调用split - 但是你的AJAX调用是异步的,所以当你使用workOrderEmployeesA变量时它不存在我正试图在它上面运行split方法。

您可以使调用同步(这可能不是一个好主意,具体取决于代码的实现方式),或者您可以抛出AJAX调用中的workOrderEmployeesB变量 其他一切,并在AJAX调用中执行所有内容,如果您仍希望它以异步方式运行执行您希望它执行的操作。