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


Jquery ajax return value appending extra unwanted data?

我正在从$.ajax调用中调用一个php函数,以便向数据库中添加一个新项。php函数echo是一个逗号分隔的值列表,我想在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"并echos。当它达到成功函数时,它现在读作:"角色12,角色"。有人知道为什么要加上这个名字吗?我有一种感觉,这是一件非常简单的事情,但现在我看不到它,所以非常感谢任何帮助!:)

更新:

感谢Val&Jonathan Kuhn我将问题追溯到函数get_event_type_name中对"echo"的一个错误调用,该调用将名称附加到以下echo上。

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

您在同一函数中使用"echo"answers"return"。尝试删除您不需要的"return$newID;"语句。这可能是导致额外文本

的原因

感谢Val&Jonathan Kuhn我将问题追溯到函数get_event_type_name中对"echo"的一个错误调用,该调用将名称附加到以下echo上。