通过AJAX以JSON格式提交表单

时间:2015-02-26 03:14:15

标签: php jquery ajax json codeigniter

我正在尝试将HTML表单提交给服务器,但它失败了。我这里有几个问题。

  1. 我正在提出CORS请求。这是客户的要求,我对此无能为力。 (我的应用位于localhost:3000/login.html&我的服务器位于http://localhost:3001/Login/auth

  2. localhost:3001中的服务器接受JSON请求并返回JSON响应。

  3. (我已在浏览器中禁用了web-security以允许CORS请求)

    所以,我创建了HTML表单并试图用AJAX提交它。在这里你可以看到代码。

    $(function(){
        $("#loginform").submit(function(e){
    
            e.preventDefault();
    
    //      var data = $("#loginform").serialize();
    
                var data =  {"username" : $("#username").val(),"password" : $("#password").val()};
    
            alert(JSON.stringify(data));
    
            $.ajax({
                type: "POST",
                url: "http://localhost:3001/Login/auth",
                data: data,
    
                contentType: "application/json",
                crossDomain : true,
                dataType: "json",
                success: function(data) {
    
                    alert("success" + JSON.stringify(data));
    
                },
                error:function(data){
                    alert('error : '+JSON.stringify(data));
                }
    
            });
    
        });
    });
    

    我在PHP(codeigniter)中创建了模拟服务器。这是代码。

    public function auth(){
    
            $input_data = json_decode(trim(file_get_contents('php://input')), true);
    
              $debug_export = var_export(file_get_contents('php://input'), true);
              file_put_contents('new.txt',$debug_export . PHP_EOL, FILE_APPEND);
    
            $user = 'admin';
            $pass = 'admin';
            $token = '1';
    
            foreach($input_data as $key=>$value) {
                if ($key === 'username') {
                    $this_user = $value;
                }
                if ($key === 'password') {
                    $this_password = $value;
                }
    
            }
    
            if(isset($this_user) && isset($this_password)){
                if($this_password === $pass && $this_user === $user){
                    echo json_encode(array('token'=>$token));
                }else{
                    echo json_encode(array('token'=>'null'));
    
                }
            }
    
    
            return 0;
    
        }
    

    当我提交表格时,我会收到这样的回复。

    ....
    <p>Severity: Warning</p>
    <p>Message:  Invalid argument supplied for foreach()</p>
    <p>Filename: controllers/Login.php</p>
    <p>Line Number: 77</p>
    ....
    

    我的'new.txt'文件的日志详细信息如下。

    ''
    'username=admin&password=admin'
    

    我真的不知道我在这里做错了什么。有人可以帮我从这里出去吗?

0 个答案:

没有答案
相关问题