我从我的$ .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没有真正的关系?
答案 0 :(得分:1)
您在同一个功能中使用“echo”和“return”。尝试删除“return $ rowID;”声明你不需要它。它可能是导致额外文本的原因
答案 1 :(得分:0)
感谢Val&amp; Jonathan Kuhn我将问题追溯到函数中对“echo”的迷路调用:get_event_type_name将名称附加到后面的echo上。