Jquery ajax返回值附加额外的不需要的数据?

时间:2011-06-24 14:50:56

标签: php jquery ajax

我从我的$ .ajax调用中调用一个php函数来向数据库中添加一个新项。 php函数回显了一个逗号分隔的值列表,我想在我的ajax成功函数中使用它 问题是来自ajax成功函数的数据似乎有一些额外的,不需要的数据附加到返回字符串的前面,我不知道它来自何处!

这是php函数:

function add_event_role()
{           
        //validated by jquery already
        $newID = $this->Event_model->insert_event_role(
            $this->input->post('roleEventType'),
            $this->input->post('roleName'),
            $this->input->post('roleRate'));

        //create return value for ajax of id,name of event type
        $retStr = $newID . ',' . $this->get_event_type_name($this->input->post('roleEventType'));

        log_message('error','retStr=' . $retStr);

        echo $retStr; //to send back to ajax call
        return $newID;
}

这是调用它的jquery:

   //set form data into a variable
        var dataString = 'roleEventType='+ typeId+'&roleName='+name+'&roleRate='+rate;

        $.ajax({
            type:"POST",
            url:"<?php echo site_url('settings/add_event_role'); ?>",
            data: dataString,
            cache: false,
            success:function(data)
            {
                                    //split the return from add_event_role (it's: id,name)
                                    var splitArr = data.split(',');                                        
                        //message user 
                $.jGrowl("New event role added!", { header: 'Success' });
                //reload event roles to show new event role
                var newRow = "<tr><td>"+splitArr[1]+ "</td><td>"+name+"</td><td>"+rate+"</td><td><a href=\"edit\" id=\"" +splitArr[0]+"\"  class=\"editEventRole\">Edit</a> / <a href=\"delete\" id=\"" +splitArr[0]+"\"  class=\"deleteEventRole\">Delete</a></td></tr>";
                $("#eventRoleList").append(newRow);
                //clear add event form
                //...
            }

        });

作为一个例子:php函数最终创建字符串“12,role”和回​​声。当它到达成功函数时,它现在读作:“role12,role”。任何人都知道为什么要追加这个名字?我觉得这很简单,但现在我看不到它,所以任何帮助都非常感激! :)

更新:

感谢Val&amp; Jonathan Kuhn我将问题追溯到函数中对“echo”的迷路调用:get_event_type_name将名称附加到后面的echo上。

也许这个问题应该删除,因为错误毕竟与Jquery / Ajax没有真正的关系?

2 个答案:

答案 0 :(得分:1)

您在同一个功能中使用“echo”和“return”。尝试删除“return $ rowID;”声明你不需要它。它可能是导致额外文本的原因

答案 1 :(得分:0)

感谢Val&amp; Jonathan Kuhn我将问题追溯到函数中对“echo”的迷路调用:get_event_type_name将名称附加到后面的echo上。