【问题标题】:Javascript Ajax Post DataJavascript Ajax 发布数据
【发布时间】:2014-02-18 07:45:27
【问题描述】:

Javascript:

    function LoginButton1OnClick() {
        $.ajax({
            type: "POST",
            url: "Login/MainPageRegister",
            cache:false,
            data:
                {
                    LoginEmailText: $("#LoginEmailText").val(),
                    LoginPasswordText: $("#LoginPasswordText").val(),
                },
            success: function (mydata) {
                $("#BodyPage").html(mydata);
            }
        });
    }

操作结果:

 [HttpPost]
    public ActionResult MainPageRegister(MyModel model)
    {
        return View();
    }

我将数据发布到“MainPageRegister”。但是出现了 2 个问题。

  1. Url 在浏览器中永远不会更改。在我发布数据之后。

  2. 我无法在浏览器中点击“后退前进”。如果我通过输入“f5”刷新浏览器,页面打开的不是当前页面页面。

任何帮助将不胜感激。

【问题讨论】:

  • 你的表单代码可以吗??
  • 1-Url 在浏览器中永远不会改变。在我发布数据之后。 Ans: 它是一个 ajax 请求
  • 我想使用 javascript 或 ajax 等来发布数据。您有什么建议吗? @Pilot
  • 使用哈希标签 url domain.com/#url
  • @user3239568 用于异步操作,使用 AJAX

标签: jquery asp.net-mvc http-post


【解决方案1】:

散列网址的快速示例

var storedHash = window.location.hash; //get hash
    if (storedHash !== '') { //if no empty
        hashChanged(storedHash);
    }
window.setInterval(function () {
        if (window.location.hash != storedHash) { //chek if curent hash not == to stored hash when page was opened
            storedHash = window.location.hash;
            hashChanged(storedHash); //if change call a funcin
        }
    }, 100); //check hash if changed

function hashChanged(storedHash) {
    var link = storedHash.substr(1, storedHash.length); //get the link
    $.ajax({
        type: "POST",
        url: link+".php", //in browser url should look like #profile so when somebody 
        cache:false,
        data:
            {
                LoginEmailText: $("#LoginEmailText").val(),
                LoginPasswordText: $("#LoginPasswordText").val(),
            },
        success: function (mydata) {
            $("#BodyPage").html(mydata);
        }
    });
    }
  1. 您来到网站 example.com
  2. 如果您更改为 example.com#profile
  3. 它会自动运行ajax函数来POST数据到profile.php
  4. 如果 # 将 #page 它会将数据发布到 page.php 等等,我没有检查代码,但它应该可以运行 console.log() 以检查 storedHash 的工作方式!

【讨论】:

  • 感谢您对 Froxz 的所有帮助。但我需要根据我的示例代码提供您的代码。您可以将您的代码应用于我的相关代码吗?但是因为我尝试了您的代码,所以我无法同时更改 url 和发布数据。
【解决方案2】:

如果您想使用 ajax 发布数据并且希望支持 url,则需要围绕这个概念设计您的应用程序。

我会推荐看看 emberjs 或 sammyjs。这些是围绕这个 url-state-concept 构建应用程序的绝佳框架。

http://sammyjs.org/ http://emberjs.com/

【讨论】:

    【解决方案3】:

    问题是您正在执行 ajax 请求,ajax 请求不会修改浏览器历史记录,因此您无法返回。

    您可以使用 HTML5 pushState() 通过 JS 以及主题标签来修改历史记录。在 JS 中你可以使用 window.location.hash 来修改 URL hashtag。

    这个问题的第一个答案可以给主题带来更多的光明:Change the URL in the browser without loading the new page using JavaScript

    【讨论】:

    • 什么是解决方案?我想使用 ajax/javascript 发布数据。你有什么建议?
    • HTML5 不被所有浏览器支持((
    • 我编辑了响应,您可以使用 HTML5 pushState 以及主题标签。在 JS 中你可以使用window.location.hash 来修改 URL hashtag。
    • @gpopoteur 如果我使用 window.location.hash,url 会改变 ok.But 我不能返回和转发页面。你有前进后退的解决方案吗?
    • @user3239568 我确实相信有了window.location.hash你可以在历史上来回前进,你用的是什么浏览器,浏览器的版本是什么?
    【解决方案4】:
    1. 那是阿贾克斯,我的朋友。网址不会改变。数据将作为 Html 到达,因为您正在渲染视图。您可以更改页面的部分内容,但不会重定向 URL。

    2. 这又是 Ajax。找到以下解决方法Html 5 or JS

    【讨论】:

    • 如果我可以更改 url,我如何在浏览器中前进和返回?有什么办法可以解决这个问题吗?
    • 点击链接... Html 5 or JS
    猜你喜欢
    • 2017-09-29
    • 2011-06-02
    • 2015-08-31
    • 2016-07-22
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多