【问题标题】:JQuery.ajax() method not executingJQuery.ajax() 方法未执行
【发布时间】:2012-08-16 16:42:24
【问题描述】:

我有一个调用 JavaScript 方法的按钮,如下所示:

processSelection = function(filename) {
  //alert('method reached');
   $.ajax({
      url: "sec/selectUsers.php",
      data: "filename="+filename,
      cache: false,
      dataType:'html',

      success: function(data) {
        //$('#uploader').html(data);
        $('#noUsers').sortOptions();
        values = $('#noUsers').children();

        for (i = 0; i < values.length; i++) {
          $(values[i]).bind('dblclick',switchUser); 
        }

        $('#addButton').bind('click',addSelection);
        $('#removeButton').bind('click',removeSelection);
        $('#submitButton').bind('click',addUsersToFile);
      },

      error: function (request, textStatus, errorThrown) {
          alert('script error, please reload and retry'); 
      }

   }); /* ajax */
}

它不会转到selectUsers.php 脚本,也不会发布错误消息。当我单击“添加用户”按钮时,它什么也不做。其他方法:switchUserremoveSelectionaddSelectionaddUserstoFile 已定义。

我对 JavaScript 和 php 还很陌生,并且已分配给这个项目在我们的网站上运行维护。我的 php_error.log 也没有显示错误。如果有人对此特定问题或一般调试有任何建议,我将非常感激。

这里是点击事件:

 <input type="button" value="add users" onclick="processSelection('<?=$drFile['name']?>')"/>

好的,

为了简化我的问题,我这样做了:

processSelection = function(){
              //alert('method reached');
               $.ajax({
                          url: "sec/testPage.php",
                          cache: false,
                          success: function() {
                                              alert('success');
                          },
                          dataType:'html',
                          error: function (request, textStatus, errorThrown) {
                              alert('script error, please reload and retry'); }
                     });

}

其中 testPage.php 只是一个包含一些值的表。

现在当我点击按钮时它显示“成功”,但从不显示 testPage.php

【问题讨论】:

  • 您是否检查过该函数是否正在触发?发布您的按钮HTML
  • 尝试使用url: "/sec/selectUsers.php", 而不是url: "sec/selectUsers.php",
  • 您使用的网址真的正确吗? PHP 文件是否在执行此 javascript 的页面的子目录“sec”中?
  • 所有浏览器都可以让您按 F12 查看网络请求和响应。
  • 按钮的外观如何以及您如何处理数据。如果您取消注释警报,您会得到它们。使用 firebug 在 chrome 或 Firefox 中查看,如果您调用 php,请在控制台和 NET 选项卡中查看

标签: php javascript jquery web-applications


【解决方案1】:
dataType: 'HTML' 

据我所知,必须在您的成功方法之前。如果仍然不起作用,请尝试以下操作:

它不会显示测试页面,因为您没有在当前正文中附加任何内容。如果您在屏幕上看到“成功”,您的脚本就会成功执行。您需要做的就是如果您在 testPage 中生成了 html,请将所有 html 分配给一个 php 变量,然后只回显它而不是像

那样返回它
 echo $myhtmlgenerated 

改变

 success: function() { ....

 success: function(result) { 
   $(body).append(result);
 }

或者您可以使用它并指定一个特殊的 div 来保存该页面中的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    相关资源
    最近更新 更多