使用自定义MVC从JQuery ajax(),PHP和MySQL检索JSON数据

I have been searching everywhere and I am not getting anywhere. This is what I am using: Custom PHP MVC this is what I am trying to get: From userView.php I want to replace an id="ShowName" with JSON data from a ajax Call using JQuery

This is what I have: userController.php

if (isset($_POST['id'])) {
    $this->getView('users', $this->object->getUser($_POST['id']));
}

userModel.php

public function getUser($id) {
    $this->user = array();

    parent::getConnection();
    $this->sql = $this->dbh->query("SELECT * FROM User WHERE idUser='". $id ."'");
    parent::errorHandler();
    $this->results = $this->sql->fetch(PDO::FETCH_ASSOC);
    $this->user[] = array(
        'name' => $this->results['name'],
        'lastname' => $this->results['lastname'],
        'email' =>  $this->results['email']
        );
    $obj['user'] = $this->user;

    parent::closeConnection();
    header('Content-Type: application/json');
    print json_encode($obj);

}

userView.php

<select class="form-control blue select" id="getUserID">
    <option value="default">Seleccione un Usuario</option>
    <?php $this->object->getUserslist();?>
</select>

<span id="name"></span>

Method getUsersList() inside userModel

public function getUsersList() {

    parent::getConnection();
    $this->sql = $this->dbh->query("SELECT * FROM User ORDER BY name ASC");
    parent::errorHandler();
    while($this->results = $this->sql->fetch(PDO::FETCH_ASSOC)) {
        echo "<option value='" . $this->results['idUser'] . "'>" . $this->results['name'] . "</option>";
    }
    parent::closeConnection();

}

JQuery

$("#getUserID").change(function(){
    var userID = $("#getUserID").val();
    $.ajax({
        type: 'POST',
        url: 'user',
        data: 'id='+userID,
        dataType: 'json',
        success: function(data){
            var obj = $.parseJSON(data);
            alert(obj.name)
        }
    });
});

It retrieves JSON data at the very top of the html file, but the alert is not prompting, so I guess it gets data before the success is called.

Direct Question: How can I retrieve the JSON data from PHP so I can use it in html from JQUERY ajax Response?

Thanks!!!!

1个回答



在userModel.php </ p>

更改</ p>

 <  code> $ this-&gt; user [] = array(
'name'=&gt; $ this-&gt; results ['name'],
'lastname'=&gt; $ this-&gt; results ['lastname '],
'电子邮件'=&gt; $ this-&gt; results ['email']
);
$ obj ['user'] = $ this-&gt; user;
</ code> < / pre>

to:</ p>

  $ obj = array(
'name'=&gt; $ this-&gt; results ['name'] ,
'lastname'=&gt; $ this-&gt; results ['lastname'],
'email'=&gt; $ this-&gt; results ['email']
);
</ code> </ pre>

查看警报提示是否返回您期望的内容。</ p>
</ div>

展开原文

原文

In userModel.php

change

$this->user[] = array(
    'name' => $this->results['name'],
    'lastname' => $this->results['lastname'],
    'email' =>  $this->results['email']
    );
$obj['user'] = $this->user;

to:

$obj = array(
    'name' => $this->results['name'],
    'lastname' => $this->results['lastname'],
    'email' =>  $this->results['email']
    );

See if the alert prompt returns what you expect.

duanchao1002
duanchao1002 谢谢,感谢你的帮助,我会继续努力
接近 5 年之前 回复
douzhi1919
douzhi1919 做console.log(数据); 在成功的过程中,您应该能够弄清楚数据对象是如何构建的,并且您将会在路上。
接近 5 年之前 回复
dongxing4643
dongxing4643 现在我添加了:var user = $ .parseJSON(data); $( “#名字”)文本( “200” +用户); 它给了我SyntaxError:JSON.parse:Firebug控制台中JSON数据第1行第2列的意外字符
接近 5 年之前 回复
duanjinchi1982
duanjinchi1982 相同。 但我将此行添加到statusCode而不是成功:$(“#name”)。text(“200”+ data);. 我得到200 [对象]
接近 5 年之前 回复
douxie5930
douxie5930 将您的帖子数据更改为 - data:{id:userID},
接近 5 年之前 回复
dongyi3616
dongyi3616 我在成功之后将statusCode添加到ajax调用中并且它有效,它给了我200状态代码,我也在成功之前添加了一个beforeSend只是为了看它是否正在做某事,并且一切都按预期工作,但没有成功, 我在成功的过程中所做的一切都没有,也许这可以帮助我们
接近 5 年之前 回复
dongzexi5125
dongzexi5125 {“user”:[{“name”:“UserFirst”,“lastname”:“UserLast”,“email”:“email@email.com”,“phone”:“0”,“mobile”:“NULL” ,“birthday”:“NULL”,“id”:“2467”,“avatar”:null}]} <!Doctype html> <html> <head> <meta charset =“utf-8”> .... 你可以看到JSON出现的很好,但是ajax没有得到它,我认为它必须是关于DOM的东西
接近 5 年之前 回复
duanbi1888
duanbi1888 复制并粘贴console.log在控制台选项卡中返回的内容。
接近 5 年之前 回复
douchuo0730
douchuo0730 一样。 Liek我说,在控制台我可以看到数据,但我无法从JQuery访问它,既不是从警报或我提到的id。 在网(顺便说一句,使用Firebug)我只能看到HTML代码作为响应,没有帖子,帖子只显示在控制台:(
接近 5 年之前 回复
duanguan5922
duanguan5922 此外,在开发人员工具栏中,检查网络选项卡,查看ajax调用的响应。
接近 5 年之前 回复
drwg89980
drwg89980 试试console.log(数据); 并注释掉警报并查看控制台中显示的内容。 也尝试做console.log(obj);
接近 5 年之前 回复
douxianji6104
douxianji6104 不,没有,警报根本不起作用,但我确实得到了JSON数据,但就像我说的,在控制台和html代码之上
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐