首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法从ajax请求中的php返回中获取响应

无法从ajax请求中的php返回中获取响应
EN

Stack Overflow用户
提问于 2016-06-08 07:01:11
回答 3查看 1K关注 0票数 2

我正在尝试访问从php代码到jquery ajax的输出。但是我不知道为什么它返回给我整个页面的html,包括结果。有谁能告诉我这件事吗?在firefox控制台中,它显示页面html响应,包括php结果。但是在jquery代码中,console.log没有命中。

下面是jquery代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function getprofile()
{
     $.ajax({
            url: 'Userpage/get_profile',
            //data: {'title': title},  change this to send js object
            type: "post",
            dataType: 'json',
            data: {'userid': 1}, 
            success: function(data) { 

            console.log(data);
          }
        });
}

我的php代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');
class Userpage extends CI_Controller
{


    function __construct()
    {

        parent::__construct();

        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->library("session");
        $this->load->model("Userpage_model");
        $this->load->view('Userpage_view');
    }

    public function index()
    {

    }


    public function get_profile()
    {
        $data = array();
        $post_id = $this->input->post('userid');
        $data['comments'] = $this->Userpage_model->get_profile($post_id); 
        echo json_encode($data['comments']);
        exit;
    }


}
?>

请检查代码并告诉我哪里出错了

谢谢

EN

回答 3

Stack Overflow用户

发布于 2016-06-08 07:02:25

使用exit

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function get_profile()
    {
        $data = array();
        $post_id = $this->input->post('userid');
        $data['comments'] = $this->Userpage_model->get_profile($post_id); 
        echo json_encode($data['comments']);
        exit; // use exit here
    }

编辑

PHP使用一个名为header()的特殊函数在呈现期间设置页面的属性。

票数 1
EN

Stack Overflow用户

发布于 2016-06-08 07:11:46

您需要从您的函数返回,使用exit很好,但这不是一个好的做法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function get_profile()
    {
        $data = array();
        $post_id = $this->input->post('userid');
        $data['comments'] = $this->Userpage_model->get_profile($post_id); 
        return json_encode($data['comments']);
    }
票数 1
EN

Stack Overflow用户

发布于 2016-06-08 09:33:24

您正在使用CI。在此ajax调用中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$.ajax({
    url: 'Userpage/get_profile',
    success: function(data) {
        console.log(data);
    }
});

您期望在Userpage控制器内对get_profile操作进行ajax调用,该调用可能会返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "comments": [
        { ... },
        { ... },
        { ... },
        ...
    ]
}

它将记录在浏览器控制台中。

但是你得到了意想不到的结果,对吧?

我认为,您的ajax调用导致了错误。为了证明这一点,修改您的ajax调用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$.ajax({
    url: 'Userpage/get_profile',
    success: function(data) {
        console.log(data);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        // add this function to logs error
        console.log(textStatus + ': ' + errorThrown);
    }
});

现在,如果ajax调用导致错误,您可以在浏览器控制台中看到错误。我很确定你会在浏览器控制台中收到错误: Not Found

如果您使用的是CI,则URL将类似于:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://<something>/index.php/site/index

在此页面中,如果您使用url Userpage/get_profile进行ajax调用,则浏览器真正要做的是对以下内容进行ajax调用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://<something>/index.php/site/index/Userpage/get_profile

而不是你所期望的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://<something>/index.php/Userpage/get_profile

要解决这个问题,您必须在ajax调用中更改 URL 的值,以指向上面的正确URL。

通过使用CI,可以在site_url()函数的帮助下生成上面的absoulte:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
site_url('Userpage/get_profile')

我通常将这个URL打印在HTML中的某个地方,然后在ajax调用期间从javascript中检索它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37695381

复制
相关文章
为什么 HashMap 要用 h^(h >>>16) 计算hash值?槽位数必须是 2^n?
昨天中午,一位粉丝朋友在微信私信我,问:为啥HashMap的hash值计算格式是这样:(h = key.hashCode()) ^ (h >>> 16)?h ^ ^ (h >>> 16)是什么意思?
一行Java
2022/05/17
1.1K0
为什么 HashMap 要用 h^(h >>>16) 计算hash值?槽位数必须是 2^n?
通过Kuberhealthy了解K8s的KPI
作者:Joshulyne Park(Comcast),Eric Greer(Comcast)
CNCF
2020/06/04
1.4K0
k8s 通过helm发布应用
在红帽系的Linux中我们使用yum来管理RPM包,类似的,在K8s中我们可以使用helm来管理资源对象(Deployment、Service、Ingress...)实现K8s中应用的快速发布、升级、维护和分享。helm 官方文档[1]
你大哥
2022/03/14
6350
k8s 通过helm发布应用
Map接口和其子类HashMap遍历、LinkedHashMap
现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。
共饮一杯无
2022/11/28
2580
Map接口和其子类HashMap遍历、LinkedHashMap
面试官:为什么重写 equals 同时要重写 hashCode? 我:…
重写equals是为了在业务逻辑上判断实例之间是否相等。重写hascode是为了让集合快速判重。
终码一生
2022/04/14
2840
Java(集合④)
当方法的参数列表数据类型已经确定,但是参数个数不确定,就可以使用可变参数;
全栈开发日记
2022/05/12
7250
(66) 理解synchronized / 计算机程序的思维逻辑
上节我们提到了多线程共享内存的两个问题,一个是竞态条件,另一个是内存可见性,我们提到,解决这两个问题的一个方案是使用synchronized关键字,本节就来讨论这个关键字。 用法 synchronized可以用于修饰类的实例方法、静态方法和代码块,我们分别来看下。 实例方法 上节我们介绍了一个计数的例子,当多个线程并发执行counter++的时候,由于该语句不是原子操作,出现了意料之外的结果,这个问题可以用synchronized解决。 我们来看代码: public class Counter {
swiftma
2018/01/31
7470
(66) 理解synchronized / 计算机程序的思维逻辑
JDK1.9-Map集合
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/12/03
3720
《Java 数据结构与算法》第5章:哈希表(散列)
哈希散列的想法在不同的地方独立出现。1953 年 1 月,汉斯·彼得·卢恩 ( Hans Peter Luhn ) 编写了一份IBM内部备忘录,其中使用了散列和链接。开放寻址后来由 AD Linh 在 Luhn 的论文上提出。大约在同一时间,IBM Research的Gene Amdahl、Elaine M. McGraw、Nathaniel Rochester和Arthur Samuel为IBM 701汇编器实现了散列。 线性探测的开放寻址归功于 Amdahl,尽管Ershov独立地有相同的想法。“开放寻址”一词是由W. Wesley Peterson在他的文章中创造的,该文章讨论了大文件中的搜索问题。
小傅哥
2022/12/13
7040
《Java 数据结构与算法》第5章:哈希表(散列)
Java类集框架详细汇总
Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾;
BUG弄潮儿
2021/04/12
7160
【Java】Map集合
现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。
陶然同学
2023/02/27
1.2K0
【Java】Map集合
如何通过Openshift实现K8S容灾?
越来越多的K8S应用采用RedHat OpenShift进行部署,IT团队需要部署容灾功能,来防范系统崩溃导致业务受损。一部分行业通常有较强的监管要求,在出现大规模错误的时候必须有数据保护。例如HIPAA 监管要求中的CFR 164.308(7)(ii)(B),要求公司必须能够在出现系统错误的时候“恢复所有数据”。这种情况下对于Openshift上的关键应用来说,容灾是必须的。
Portworx
2020/05/30
1.5K0
踩坑:在Java中使用 byte 数组作为 Map 的 key
本文将引领我们探索:如何将byte数组作为HashMap中键。HashMap的机制使我们无法直接这样做。让我们研究一下,为何出现此状况,以及针对这种情况,几种可供选择的解决方案。
万猫学社
2023/09/01
5290
踩坑:在Java中使用 byte 数组作为 Map 的 key
Mac virtualbox k8s通过yaml创建pod_解决k8s无法通过svc访问其他节点pod的问题
当透过其他pod访问该svc时(使用命令k exec kubia-nwjcc -- curl http://10.98.41.49),出现了只能访问到和自己同处于一个节点的pod的问题,访问到其他节点上的pod时会出现command terminated with exit code 7的问题,如下:
用户1212940
2021/12/06
1.2K0
java笔记–Map的用法
我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。
全栈程序员站长
2022/09/17
7870
java笔记–Map的用法
数据结构思维 第十章 哈希
在本章中,我定义了一个比MyLinearMap更好的Map接口实现,MyBetterMap,并引入哈希,这使得MyBetterMap效率更高。
ApacheCN_飞龙
2022/12/01
7000
通过k-means进行图像量化压缩--python实现
图像读取完我们获取到的其实是一个width*height的三维矩阵(width,height是图片的分辨率)
Awesome_Tang
2018/09/11
1.5K0
通过k-means进行图像量化压缩--python实现
Java框架类集结构-底层分析
Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾;
xbhog
2021/11/15
4590
Java集合框架详述之Map集合
前言 Map接口的层次结构图: Map集合概述 Map与Collection无继承关系。 Map集合以Key和Value的方式存储数据。(键值对) Key和Value是引用数据类型。 Key和Value存储对象的内存地址。 所有Map集合的key特点:无序不可重复的。 Map集合的key和Set集合存储元素特点相同。 Map接口常用的方法: void clear() 清空集合中的元素 boolean containsKey(Object key) 判断Map中是否包含某个Key bo
百思不得小赵
2022/12/01
3000
Java集合框架详述之Map集合
JAVA–Map集合详解
特点:该集合存储键(key)值(value)对,一对一对往里存,而且要保证键(key)的唯一性。
全栈程序员站长
2022/09/01
6690

相似问题

当MyNestedClass<K>不是MyNestedClass<K>时返回MyNestedClass<K>?

23

Map.put(K,K),地图不是只有两个值吗?

15

将[(K,[V])]转到[(V,[K])]时的记忆障碍

23

std::map<K,V>::iterator是否实例化std::map<K,V>?

24

python语句:(k,v) for k,v

111
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文