【问题标题】:Jquery ajax return value appending extra unwanted data?Jquery ajax返回值附加额外不需要的数据?
【发布时间】:2011-06-24 14:50:55
【问题描述】:

我正在从我的 $.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 和 Jonathan Kuhn 的帮助,我将问题追溯到函数中对“echo”的杂散调用:get_event_type_name 将名称附加到以下 echo 中。

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

【问题讨论】:

  • 怀疑它是其中之一:echo $retStr;或返回 $newID;注释掉一个并尝试一下
  • 是的,这两个都试过了...但是当然,我需要 echo $retStr 从 php 函数中取回值...
  • 尝试执行 $retStr 的 var_dump()。然后您可以查看额外的字符是在 $retStr 之外还是在脚本中的其他地方被发送出去。
  • var_dump 在 $retStr 中显示了正确的字符串,这表明额外的数据被附加到其他地方。有什么想法吗?
  • 在评论中指出 $retStr;输出它以供ajax读取作为响应,您可以在echo $retStr之前var_dump($newID);,您应该有类似int(2)(12)的东西,如果您得到类似string(6)role12的东西,那么问题出在您的$newID;

标签: php jquery ajax


【解决方案1】:

您正在使用具有相同功能的“echo”和“return”。尝试删除“return $newID;”声明你不需要它。这可能是导致额外文本的原因

【讨论】:

  • return 怎么会自己输出?
  • 删除返回调用没有区别,无论如何应该没问题。
【解决方案2】:

感谢 Val 和 Jonathan Kuhn 的帮助,我将问题追溯到函数中对“echo”的杂散调用:get_event_type_name 将名称附加到以下 echo 中。

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多