【问题标题】:jQuery AJAX call based on drop-down doesn't return any response基于下拉的jQuery AJAX调用不返回任何响应
【发布时间】:2017-11-04 18:36:09
【问题描述】:

我有一个包含多个下拉列表的表单,需要进行 ajax 调用以检查是否存在基于选择的 2 个不同下拉列表的匹配项。

首先是程序下拉菜单,然后是公司下拉菜单。每个程序/公司都有一个匹配项,所以当一个 programValue 被选择时,如果用户选择了一个与程序没有关联的公司,我只需要显示一个不匹配的警告消息,但他们仍然可以去提前提交。

    $('#CompanySelect').change(function() {
    var ProgramValue = $("#Program").val();
    var sCompany = $("##CompanySelect").val();
    $.ajax({
             url: 'checkProgram.cfm',
             type: 'post',
             data: {Program:ProgramValue, Company:sCompany},
             dataType: 'json',
             success: function(data) {
            console.log(data);  
        }
     });

所以 checkProgram.cfm 运行几个查询来匹配公司和程序,并传递真/假作为响应。

<cfif bMatch>
    <cfset ajaxResponse = true>
<cfelse>
    <cfset ajaxResponse = false>
</cfif>

<cfoutput>#SerializeJson(ajaxResponse)#</cfoutput>

但是,当我执行 console.log(data) 时,它不会返回任何内容。

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    没有“惊人的帮助”建议我为您提供。但是,有两个想法。

    1. 当 ajax 没有返回任何东西时,通常是调用脚本没有返回任何东西。因此,您还可以在 ajax 调用中添加一个 .error 返回处理程序(无论如何都应该有一个)。

    2. “##”选择器对我来说有点奇怪。 :) 我以前见过这样做的代码,但这种情况非常罕见。你真的是这个意思吗?

    【讨论】:

    • 是的 ## 来自我的代码,因为我正在执行 cfoutput 并且它需要 ##,但是,我删除它只是为了避免这个问题。当我测试调用脚本时,它没有返回真假。
    • 添加错误处理程序帮助我解决了问题,谢谢
    • 酷。作为一个根深蒂固的习惯,我总是把我能想象到的所有类型的错误陷阱都放进去,然后希望他们永远不会开火! :)
    【解决方案2】:

    您的## 选择器不正确。应该只有一个 # 来表示一个 ID 选择器

    喜欢:

    $("#CompanySelect")
    

    也可以使用this,这将是更改事件处理程序中的&lt;select&gt;元素

    var ProgramValue = $("#Program").val();
    var sCompany = $(this).val();
    

    在那之后remote:{...} 是无效的语法,你似乎遗漏了它的ajax 代码

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 2014-10-24
      • 1970-01-01
      • 2018-01-09
      相关资源
      最近更新 更多