我正在创建一个小部件,用于在网站中“查找”数据库中任何字段的匹配项。我目前正在使用jQuery“Dialog”框,并希望提交表单,将表单重定向到控制器/操作(我使用的是使用MCV模型的yii),并将该函数的输出返回到当前窗口
我目前正在使用隐藏的div和jquery加载函数。
$("#find_results").load(loadPage, function(){
}).show();
调用一个基本上执行此操作的函数:
public function actionFind(){
if (!empty($_POST)){
//do really big query
//put results into <tr> and <td> tags using a for loop
}else{
echo <tr><td>"no results found"</td></tr>;
}
}
此代码返回一个输出,但只是“找不到结果”,这让我相信该表单实际上从未发布过。
有谁知道这里发生了什么样的黑魔法?
谢谢!
P.S。
该对话框是一个局部视图,其中包含要使用action / controller / find
提交的表单更新
我实现了这个:新错误是“undefined index:findtext”,这是我的文本输入的名称。
$("#find_results").load(loadPage,{ data: $("#find_form").serialize() },function(data){
console.log(data);
$('#find_results').html(data);
$(this).show();
});
答案 0 :(得分:0)
首先,让我们看一下signature for .load()
.load(url [,data] [,complete])
<强>网址
类型:字符串
包含发送请求的URL的字符串。
数据强>
键入:PlainObject或String
使用请求发送到服务器的普通对象或字符串。
<强>完整强>
类型:Function(String responseText,String textStatus,jqXHR jqXHR)
请求完成时执行的回调函数。
因此,如果您想将数据发送到服务器,您可以执行以下操作:
$("#find_results").load(loadPage, {someKey: 'some value'}, function(){
$(this).show();
});
现在,我们正在发送数据,没关系我之前所说的关于$_GET
请求方法
如果数据作为对象提供,则使用POST方法;否则,假设GET。
此外,由于您已标记yii
,因此您可能需要在应用中以不同方式访问$_POST
,如下所示:
public function actionFind( ){ // pass in $request from your app
$request = Yii::$app->request;
if (!empty( $request->post() )){ // change this
//do really big query
//put results into <tr> and <td> tags using a for loop
}else{
echo <tr><td>"no results found"</td></tr>;
}
}
请参阅The Definitive Guide to Yii 2.0说明:
$request = Yii::$app->request;
$post = $request->post();
// equivalent to: $post = $_POST;
$id = $request->post('id');
// equivalent to: $id = isset($_POST['id']) ? $_POST['id'] : null;