【发布时间】:2026-02-16 15:40:01
【问题描述】:
下面是我在仪表板模块中的脚本。
$(function()
{
var o;
$.get('dashboard/xhrgetInsert',function(o)
{
for(var i = 0;i <= o.length; i++)
{
$("#appendHere").append("<div>"+o[i].text+"</div>");
}
},'json');
$("#randomInsert").submit(function()
{
alert("hi");
var data = $(this).serialize();
var url = $(this).attr("action");
$.post(url,data,function(o)
{
$("#appendHere").append("<div>"+o+"</div>");
},'json');
return false;
});
});
假设,当我在仪表板页面中时,此函数 (xhrgetInsert) 必须返回要附加到 HTML 中的值。不幸的是,它没有附加任何东西,当我在 chrome 控制台“响应”中检查时,它说方法不存在。但是如果我在 url 中键入方法名称,它会显示我指定的以 json 格式返回的值。
'xhrInsert()' 函数也是如此,因为它不返回要附加的值。数据库连接非常完美,因为它可以从 db 中插入和选择数据,但无法取回值.. 我首先想知道,为什么它说该方法不存在,其次为什么不返回任何值?
我的“仪表板控制器调用仪表板模型”
public function xhrInsert()
{
$this->model->xhrInsert();
}
public function xhrgetInsert()
{
$this->model->xhrgetInsert();
}
仪表板模型包含对数据库的 mysql 查询,以 jason 格式返回值
public function xhrInsert()
{
$text = $_POST['text'];
$sql = $this->db->prepare("INSERT INTO data(text)VALUES(:text)");
$sql->execute(array(':text'=>$text));
echo json_encode($text);
}
public function xhrgetInsert()
{
$sth = $this->db->prepare("SELECT * FROM data");
$sth->setFetchMode(PDO::FETCH_ASSOC);
$sth->execute();
$data = $sth->fetchAll();
echo json_encode($data);
}
最后,这是我的仪表板 HTML
<h1>Dashboard</h1>
<form id="randomInsert" action="<?php echo URL;?>dashboard/xhrInsert" method="post">
<label>Text: </label><input type="text" name="text"/><br/>
<input type="submit"/>
</form>
<div id="appendHere"></div>
【问题讨论】:
-
// 在这个 var o 之后的 html 文件中; var base_url = $('#base_url').val(); $.get(base_url+'dashboard/xhrgetInsert',function(o) 试试这个。
-
在这个 var o 之后; var base_url = $('#base_url').val(); $.get(base_url+'dashboard/xhrgetInsert',function(o) 试试这个。
-
@AmolNavsupe,按照您的建议进行了尝试,但仍然没有返回任何值
-
兄弟你有Skype吗?
-
尝试使用“exit;”或 ""die;" 在 "echo json_encode($data);" 之后,因为根据控制台,你得到了响应,但是整个 html 页面并且你只需要 json 数据,你可以只为 ajax 请求设置条件。
标签: php jquery ajax model-view-controller