无法在yii

时间:2016-10-14 11:43:21

标签: javascript php jquery ajax yii

我正在创建一个小部件,用于在网站中“查找”数据库中任何字段的匹配项。我目前正在使用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();
});

1 个答案:

答案 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

的内容

来自the docs:

  

请求方法

     

如果数据作为对象提供,则使用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;