Javascript 使用ajax提交表单,这样页面就不会重新加载而不会更改数据

Javascript 使用ajax提交表单,这样页面就不会重新加载而不会更改数据,javascript,ajax,forms,refresh,preventdefault,Javascript,Ajax,Forms,Refresh,Preventdefault,这将显示成功警报框,但未向服务器写入任何更改。Protip:使用Google Chrome或Firefox网络选项卡,选择XHR查看是否向服务器发送请求,并检查服务器的响应 如果您使用的是JSP: 脚本让您在代码中编写的内容执行在标记之间编写的java代码。你可以在里面写一些逻辑 如果您想在JSP中使用java值,您需要的是一个JSP表达式,您可以在标记之间编写它。那里禁止使用分号 例如: var eweb_ip = "<% GetSetting("ip_address"); %>"

这将显示成功警报框,但未向服务器写入任何更改。

Protip:使用Google Chrome或Firefox网络选项卡,选择XHR查看是否向服务器发送请求,并检查服务器的响应


如果您使用的是JSP:

脚本让您在代码中编写的内容执行在标记之间编写的java代码。你可以在里面写一些逻辑

如果您想在JSP中使用java值,您需要的是一个JSP表达式,您可以在标记之间编写它。那里禁止使用分号

例如:

var eweb_ip = "<% GetSetting("ip_address"); %>";    
var eweb_write = "http://" + eweb_ip + "/rokform/WriteLogixTags";
var datastring = $("#contactForm").serialize();
$('form').on('submit', function(e) {
    alert("inside submit function");
    e.preventDefault();
    alert("prevented default");
    $.ajax({
        type: 'post',
        url: eweb_write,
        data: datastring,
        dataType: "html",
        success: function() {
            alert('form was submitted');
        },
        error: function() {
            alert('error handing here');
        }
    });

});
因此,对于您的问题,您可以尝试以下方法:

<%
    String eweb_ip = "192.168.1.1";  // JSP scriptlet
%>
...
<script type="text/javascript">
    var eweb_ip_js = "<%= eweb_ip %>"; // JSP expression
    ...
</script>
有关更多信息,请访问:

但是,如果表单提交正确,但服务器端仍然没有所需的内容,则可能需要调试服务器代码。您的表单可能不包含所需内容,因此类似于console.logdatastring;也许能帮你解决问题

另外,您可能只是在示例中这样做,但是$'form'。on'submit'将应用于每个表单,因此以后可能会出现问题。

Brandon

我今天一直在研究同一个问题,碰巧碰到了你的问题。我也在尝试通过EWEB将数据写入PLC,而无需提交表单和重定向。假设基于XMLHttpRequest的解决方案适合您,我已经成功地测试了以下代码:

var eweb_ip = "<%= GetSetting('ip_address') %>";

请记住,EWEB有关于可写入的数据类型的特定规则。我想至少它们都是原子的。如果您查看有关表单提交方法的EWEB手册,您应该能够获得所有所需的数据类型、显示等。如果您有任何问题,请告诉我。

alerteweb_编写的内容可能重复;返回?如下所述,返回了正确的ip地址。它告诉我表单已提交。这是我的firebug日志。POST 302 redirect 1.25s | GET 200 OK 2.13sIt正在获得如上所述的正确ip地址。谢谢。@KillianDS这的确是一个糟糕的答案,值得更多的解释。我在上一次编辑中添加了一些细节。我实际上是在括号内编写asp。
function EWEBWrite(tagNameInp) {
    var formData = "numtags=1&t_1_slot=0&t_1_changed=1&t_1_value=1&t_1_tagname=" + tagNameInp + "&t_1_type=BOOL&t_1_display=Decimal";
    var srvWrt = new XMLHttpRequest();
    srvWrt.open("POST","/rokform/WriteLogixTags",false);
    srvWrt.send(formData);
    return
}