首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >第二种形式不获取数据

第二种形式不获取数据
EN

Stack Overflow用户
提问于 2014-09-16 01:58:04
回答 1查看 46关注 0票数 0

我有一个页面应用程序,它代替页面,一次加载一个节。这个应用程序的基本功能是,您输入一个查询,然后转到一个结果页面,然后在另一个表单中的结果之上--与第一个表单相同,但是不是进入一个新的视图(进入同一页面的另一个部分),结果就出现在它下面。每当加载新视图时,另一个视图就会被隐藏。(例:家庭视图有搜索表单。搜索,提交,隐藏主页视图,然后显示结果视图)

数据来自使用Ajax的远程服务器。

编辑:多亏了@Himal,我修正了第一个问题。然而,现在当我在第二种形式中输入一些东西时,它只返回"Nothing now“。我不知道它为什么这样做,即使我输入了一些东西。有什么原因吗?

老(固定!)问题:

然而,问题是第一种形式是可行的。您搜索一个查询,然后结果将显示在结果视图中,但是,当您再次使用位于结果视图之上的表单进行搜索时,它不会做任何事情。以下是代码:

代码语言:javascript
运行
复制
getPickerData = function() {
    var tickerForm = $('#analyze-form'),
        pickHolder = $('#PickHolder'), // The view where the results and second form resides
        pickContent = $('#PickHolder #pick-content'); // Where the results is loaded
        tickerHomeVal = $('#home #ticker').val(); // Value of the first ticker
    //document.getElementById('PickHolder').innerHTML='<h3 class="loadingtext">Loading Data</h3>';
    //document.getElementById('PickHolder').style.display='';
    $.ajax({
        type: "POST", 
        url: 'http://differenturl.com/something.php', 
            data: "something="+tickerHomeVal+"&something",
        complete: function(data){  
            pickContent.html(data.responseText);
        }  
    });

    var tickerResultsVal = $('#PickHolder #ticker').val();
    $('#results-submit-ticker').on('touchstart click', function(e){
        console.log('clicked?');
        $.ajax({
            type: "POST", 
            url: 'http://differenturl.com/something.php', 
            data: "something="+tickerResultsVal+"&something",
            complete: function(data){   
               pickContent.html(data.responseText);
               console.log(data);
            }  
        });
    });
}

第二个ajax调用用于第二个表单。单击事件就在这里。返回false在那里,这样按钮就不会改变视图。

代码语言:javascript
运行
复制
var viewchange = $('.toview');

viewchange.on('touchstart click', function(event){
    var $this = $(this);

        doAction($this); // runs the function above with a bunch of unrelated if's.
         return false;
});

差不多就是这样。有一个if语句,它查找某个类来运行这个函数,但我认为这与此无关。

第二种形式的HTML如下所示。它和第一种形式完全一样,只是这里的不同之处在于,它在一个不同的视图中,以及在它下面的一个div,对于结果。

代码语言:javascript
运行
复制
<div id="PickHolder" class="view container">
    <form id="analyze-results-form" action="" class="analyze-form">
        <div class="input-container">
            <input id="ticker" class="input-stock" type="text" placeholder="Add Ticker">

        </div><!-- /.input-container -->
        <button id="results-submit-ticker" class="action action-data btn no-view" data-ref="#PickHolder">Analyze</button>
    </form>
    <div id="pick-content"></div>
</div>

以及不同的ids,从JS中可以看出。

为什么JS的区段表单不返回数据?console.log()甚至不会发生在单击。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-16 03:27:19

正如himal所建议的,对于ajax请求,您应该使用成功回调而不是完成回调,以便能够查看是否存在错误或是否已成功完成。所以ajax调用看起来应该是,

代码语言:javascript
运行
复制
$.ajax({
            type: "POST", 
            url: 'http://differenturl.com/something.php', 
            data: "something="+tickerResultsVal+"&something",
            success: function(data){   
               pickContent.html(data.responseText);
               console.log(data);
            },
            error: function(xhr, error) {
               // handle error
            }
});

已完成的回调隐藏了名为tickerResultsVal的变量的未设置值的基础错误。

在单击事件范围之外定义和设置tickerResultsVal的值。因此,在第一次运行时,它被正确设置并发送到ajax请求。但在你的第二次点击;

代码语言:javascript
运行
复制
var tickerResultsVal = $('#PickHolder #ticker').val();

永远不会运行,因此从ajax请求中返回"Nothing submitted“错误的tickerResultsVal是未设置的。

可以使用指向值的相对路径,也可以将tickerResultsVal的定义放在单击事件中。

代码语言:javascript
运行
复制
$('#results-submit-ticker').on('touchstart click', function(e){
    var tickerResultsVal = $('#PickHolder #ticker').val(); // inside the scope of click event
    console.log('clicked?');
    $.ajax({
        type: "POST", 
        url: 'http://differenturl.com/something.php', 
        data: "something="+$('#PickHolder #ticker').val()+"&something", // or just use relative path to input value
        complete: function(data){   
           pickContent.html(data.responseText);
           console.log(data);
        }  
    });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25859588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档