Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CodeIgniter/Ajax-向控制器发送post值_Ajax_Codeigniter_Jquery - Fatal编程技术网

CodeIgniter/Ajax-向控制器发送post值

CodeIgniter/Ajax-向控制器发送post值,ajax,codeigniter,jquery,Ajax,Codeigniter,Jquery,我正在做一个简单的登录表单。当用户单击Login按钮时,我希望将post值发送到我的控制器,根据我的数据库(使用模型)验证它们并返回一个值。基于该值,我希望将用户发送到成员区域,或者在表单上显示错误消息。此错误消息具有类“error”,默认情况下是隐藏的。我想使用jQuery的show()在凭据错误时显示它 我的表单有两个文本字段,一个用于电子邮件地址,另一个用于密码和提交按钮。然而,我从来没有真正使用过Ajax,除了一些非常基本的东西,比如一个简单的加载器,所以我不知道下一步该怎么做

我正在做一个简单的登录表单。当用户单击Login按钮时,我希望将post值发送到我的控制器,根据我的数据库(使用模型)验证它们并返回一个值。基于该值,我希望将用户发送到成员区域,或者在表单上显示错误消息。此错误消息具有类“error”,默认情况下是隐藏的。我想使用jQuery的show()在凭据错误时显示它

我的表单有两个文本字段,一个用于电子邮件地址,另一个用于密码和提交按钮。然而,我从来没有真正使用过Ajax,除了一些非常基本的东西,比如一个简单的加载器,所以我不知道下一步该怎么做

    $("#btn_login").click(
    function()  
    {
    // get values
    var email_address = $("#email_address").val(); 
    var password =  $("#password").val();

    // post values? and ajax call?

    //stop submit btn from submitting
    return(false);

    }
);
我假设我必须在这里使用jQuery的ajax()方法,所以我考虑使用这个示例:

$.ajax({
     type: "POST",
     url: "some.php",
     data: "name=John&location=Boston",
     success: function(msg){
        alert( "Data Saved: " + msg );
     }
});

但是,我不确定如何在data:thingy.中获取我的post值(这两个变量)。。还是我应该走另一条路?这似乎是我一学就永远不会忘记的事情,所以如果有人能帮我,我将不胜感激。非常感谢。

您所需要做的就是用这些值创建一个键/值对,并将其分配给数据参数,剩下的工作由jQuery完成

//create a js object with key values for your post data
var postData = {
  'email' : email_address,
  'password' : password
};

$.ajax({
     type: "POST",
     url: "some.php",
     data: postData , //assign the var here 
     success: function(msg){
        alert( "Data Saved: " + msg );
     }
});
这样,您就可以使用Codeigniters
input

编辑

我在这里设置了一个测试小提琴:

我只是更喜欢.post,但你用的是等效的

基本上,控制器应该回显输出数据。不回来。您需要发回数据的字符串表示形式,以便脚本能够(如果是json,则进行计算)并对其进行操作


这里有一个很好的例子作为起点:

你肯定可以使用你的方法,但速记方法是:

$.post("some.php",{name:"John",location:"Boston",email:email_address,password:password},function(data,textStatus) { //response from some.php is now contained in data });

只需稍微修改一下ajax的url:

$.ajax({
     type: "POST",
     url: "some/myfunction",
     data: "name=John&location=Boston",
     success: function(msg){
        alert( "Data Saved: " + msg );
     }
});
确保您的url指向您想要在控制器中使用的功能。例如:控制器some中的“myfunction”(在文件some.php中)

要访问控制器函数内的post变量,请不要尝试将参数放入myfunction,而是:

class Some extends CI_Controller 
{
        ......

public function myfunction()
{
    $name = $this->input->post('name');
    $location = $this->input->post('location');
}
       ......
}

顺便说一句,提交按钮停止提交的更好方法是:$(“#btn_登录”)。单击(函数(e){e.preventDefault();//函数的其余部分);它基本上停止了任何控件的所有浏览器默认行为。假设我将
错误:
而不是
成功:
,我必须从PHP返回什么才能使其进入其中?只返回false?我得到了在控制器中返回模型的部分(如果找到用户,则返回true,否则返回false)。现在,如果成功,我会将用户带到一个新页面,但如果不成功,我希望返回到我的表单页面并显示错误类。如果这有意义。只是不确定如何返回到那里..:(@cabaret
错误:
只有在请求失败时才会被调用。在您的情况下,我建议您返回一个json对象,然后检查下一步要做什么。只需使用PHP进行json_编码并回显它。在您的JS端,您可以
eval
该数据并查看下一步要做什么。非常感谢您的编辑。我会确保检查lin好吧,我找到了我的问题所在。我检查了这个链接:我理解整个ajax的事情,但问题是..当我将我的帖子数据发送到我的控制器(login/go)时,它会以某种方式回显那里的数据,而不是表单页面上的数据(login/index)…因为…提交表单需要我登录/进入,它不允许我停留在登录/索引页面上。CodeIgniter将我带到那里,并且不会重定向回索引页面。我需要手动放置它还是什么?:(哈哈,我们都有这样的时刻!每次我被难倒时,我都会查看最明显的东西的清单。
class Some extends CI_Controller 
{
        ......

public function myfunction()
{
    $name = $this->input->post('name');
    $location = $this->input->post('location');
}
       ......
}