鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全  HTML/ Struts2+Ajax 總是請(qǐng)求失敗?

Struts2+Ajax 總是請(qǐng)求失敗?

Struts2+Ajax 總是請(qǐng)求失敗

總是走的失敗分支,調(diào)試了一下午就是不知道哪里有問(wèn)題,問(wèn)了老師,結(jié)果調(diào)試半天,還是沒(méi)解決,都快崩潰了,跪求各位大佬幫忙看下到底哪里有問(wèn)題...

圖片描述

下面代碼

頁(yè)面的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登錄</title>
    <script src="js/jquery-1.12.4.js"></script>
    <script>
        $(function () {
            $("#login").click(function () {
                var args = $("#form").serialize();
                var post = $.post("login", args, function (data) {
                    console.log(data);
                    alert(data);
                }, "text");

                post.error(function (data, status, xhr) {
                    alert(status);
                });
            });
        });
    </script>
</head>
<body>
<form id="form" method="post">
    賬號(hào): <input type="text" name="username"/><br>
    密碼: <input type="password" name="password"/><br>
    <button id="login">登錄</button>
</form>
</body>
</html>

action的

package com.fete.action;

import com.opensymphony.xwork2.ActionSupport;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

public class LoginAction extends ActionSupport {

    private String username;
    private String password;
    private InputStream inputStream;

    public String login() throws IOException {
        System.out.println(username);
        System.out.println(password);
        String info="";
        if ("root".equals(username) && "root".equals(password))
            info = "登錄成功";
        else
            info = "用戶名或密碼不正確";

        inputStream = new ByteArrayInputStream(info.getBytes("UTF-8"));
        
        return "success";
    }

    public InputStream getInputStream() {
        return inputStream;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

xml配置

<package name="default" namespace="/" extends="struts-default" strict-method-invocation="false">
        <action name="login" class="com.fete.action.LoginAction" method="login">
            <result name="success" type="stream">
                <param name="inputName">inputStream</param>
            </result>
        </action>
    </package>

這是action debug的結(jié)果

圖片描述

回答
編輯回答
痞性

ok,自己解決了,把輸入框不放在表單里就可以了。但是,這是什么原理?

圖片描述

2017年3月24日 15:47
編輯回答
失心人

能訪問(wèn)到后臺(tái)方法嗎,可以的話。F12把網(wǎng)絡(luò)訪問(wèn)的那個(gè)請(qǐng)求也截圖出來(lái)吧,現(xiàn)在信息不夠

2017年12月17日 21:39
編輯回答
夏木
$.post("login", args, function (data)  這里的url試一下絕對(duì)路徑看看
2018年2月6日 03:01