【问题标题】:JQuery AJAX Post - pass variable and navigate URLJQuery AJAX Post - 传递变量并导航 URL
【发布时间】:2011-08-04 07:08:59
【问题描述】:

我正在开发一个小谜题。用户点击图片块并猜测它是什么图片。我还计算了他们在提交之前打开了多少块。我在 VBScript/ASP 中使用以下 JQuery AJAx 代码

dataString  = 'totalClick=' + totalClick ;

$.ajax({  
    type: "POST",  
    url: "puzzle3.asp",  
    data: dataString,  
    success: function() {
        alert('totalClick' + totalClick + "data: " + dataString );
        window.location = "puzzle3.asp";
    }  
});

我的问题是,我想在“puzzle3.asp”页面上获取“totalClick”变量的值。在我导航到“puzzle3.asp”后,我想用它来决定其他一些东西。但是在这里,当我通过 AJAX 导航到puzzle3.asp 时,我丢失了 POST 变量“totalClick”的值。

有什么方法可以让我使用 POST,导航到下一页并在那里使用变量 vlaue。就像设置会话变量一样,但我知道我不能使用 JS 分配会话变量。

任何帮助将不胜感激。

【问题讨论】:

  • 只需使用 ASP 设置会话变量,然后导航到 puzzle3.asp,然后使用 ASP 拉出会话变量。
  • 如果你在做一个 Window.location,为什么首先要使用 ajax?
  • 考虑到该代码,@loddn 的评论是最合适的操作。也许OP需要更多的启发。对我来说,所有答案似乎都鼓励以复杂的方式做简单的事情。亲吻,记住。 SO 不是提供代码;这是关于指导。

标签: jquery ajax variables post


【解决方案1】:

来自 jquery 文档:

数据对象,字符串 要发送到服务器的数据。如果还不是字符串,则将其转换为查询字符串。它附加到 GET 请求的 url。请参阅 processData 选项以防止此自动处理。对象必须是键/值对。如果 value 是一个 Array,jQuery 会根据传统设置的 value 序列化多个具有相同 key 的值(如下所述)。

您是否尝试过手动将变量放入查询字符串中?

$.ajax({
    type: "POST",
    url: "puzzle3.asp?totalClick=" + totalClick,
    data: dataString,
    success: function() {
        alert('totalClick' + totalClick + "data: " + dataString );
        window.location = "puzzle3.asp";
    }
});

【讨论】:

  • 感谢您的回答。但恐怕我不能使用 POST,因为由于业务需要,我想隐藏我的“totalClick”变量。这对我来说都是个问题。所以我不能使用上面的Querystring。
  • 如果您在成功的情况下执行 window.location,为什么要使用 ajax?
【解决方案2】:

尝试通过 POST 保存变量,加载新页面并使用 AJAX 检索变量,例如:

A页:

$.ajax({
    type: "POST",
    url: "puzzle3.asp",
    data: dataString,
    success: function() {
        alert('totalClick' + totalClick + "data: " + dataString );
        window.location = "puzzle3.asp";
    }
});

B页(puzzle3.asp):

/**
 * No need to wait for load() event, just generate a
 * global variable with the number of clicks
 */
(function($){
    $.ajax({
        type: "GET",
        url: "read_clicks.asp",
        dataType: "json",
        success: function (data) {
            // Use any global variable, as needed
            $.totalClicks = data.clicks || 0;
        }
    });
}(jQuery));

【讨论】:

    【解决方案3】:

    你可以使用JSON.stringify:

    var ssnData="123";
    $.ajax({
        type: "POST",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify({ 'SSNdata': ssnData }),
        url: 'home/data',
        dataType: 'json',
        success: function (cicos) {
            //cicos is your response data
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 1970-01-01
      • 2014-04-08
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2011-02-26
      相关资源
      最近更新 更多