麻烦提交ajax表单在yii

trouble submitting ajax form in yii

本文关键字:yii 表单 ajax 提交 麻烦      更新时间:2023-09-26

我正在创建一个小部件,用于在网站中"找到"数据库中任何字段的匹配。我目前正在使用jQuery"对话框",并希望提交表单,将表单重定向到控制器/动作(我使用使用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>;
    }
}

这段代码返回一个输出,但只有"no results found",这让我相信表单实际上从未被发布过。

有谁知道这里发生了什么黑魔法吗?

谢谢!

公立小学

对话框是一个局部视图,其中包含要通过动作/controller/find提交的表单

更新:

我实现了这个代替:新的错误是"undefined index: findtext",这是我的文本输入的名称。

$("#find_results").load(loadPage,{ data: $("#find_form").serialize() },function(data){
         console.log(data);
         $('#find_results').html(data);
         $(this).show();
});

首先,让我们看看.load()的签名

。加载(url [, data] [, complete])

类型:字符串

包含发送请求的URL的字符串。

类型:纯对象或字符串

与请求一起发送给服务器的普通对象或字符串。

类型:Function(String responseText, String textStatus, jqXHR)

当请求完成时执行的回调函数。

所以,如果你想发送数据到服务器,你可以这样做:

$("#find_results").load(loadPage, {someKey: 'some value'}, function(){
          $(this).show();
});

现在,我们正在发送数据,不用管我之前说的$_GET

From 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>;
    }
}

参见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;