【问题标题】:JQuery Ajax errorjQuery Ajax 错误
【发布时间】:2023-03-10 07:35:01
【问题描述】:

我通过 ajax 将一些表单值发布到 PHP 脚本。如果成功,PHP 会回显 1,否则会回显 2。

PHP 似乎工作正常,但我被重定向到 javascript 中的 url,并在空白页上显示数字 1,而不是回显到 ajax 请求。

这是我的 javascript,谁能看出我哪里出错了?

$(".save").click(function() {
var area = $("input#area").val();  
var january = $("input#january").val(); 
var target = $("input#target").val();
var ach = $("input#achieved").val(); 
var comments = $("input#comments").val(); 
var token = "<?php echo $token; ?>";
var dataString = 'area='+ area + '&january=' + january + '&target=' + target + '&achieved=' + ach + '&comments=' + comments + '&ci_token=' + token;
  $.ajax({
    type: "POST",
    url: "review/update-review/<?php echo $yr; ?>",
    data: dataString,
    success: function(msg) {

        if(msg == 1)
        {
            alert("Your review has been updated.");
        }
        else
        {
            alert("There was a problem updating your review. Please try again.");
        }

    }
  });
  return false; });

【问题讨论】:

    标签: php jquery ajax post


    【解决方案1】:

    我认为问题可能在于您的数据参数的格式。对于

    类型:“POST”

    那么对于

    数据:“{param1: 'param1', param2: 'param2'}”

    你有没有像 fiddler 这样的工具来查看你的浏览器和服务器之间的通信。如果不是,我建议下载 fiddler(它是免费的)。它可以让您深入了解幕后实际发生的事情,并提供有关 ajax 样式帖子可能出现问题的宝贵信息。

    【讨论】:

    • 这里唯一解决这种情况的其他评论。
    • 感谢大家的回复。我使用了 Firefox 的 Tamper Data 插件,发现我错误地使用 ajax 请求传递了其他表单字段值。现在全部排序,似乎按预期工作。感谢大家的帮助。
    【解决方案2】:

    对我来说,代码看起来很不错,包括语法。仍然存在一些可能性,它们是:-

    • 您在示例中使用的执行 PHP 代码的 URL(“review/update-review/&lt;?php echo $yr; ?&gt;”)可能与您当前的页面有关。
    • 您在此处使用它来捕获 INPUT 元素的值的变量可能会产生一些额外的特殊字符(如“&”),这可能会导致错误处理,从而导致 JavaScript 问题。

    希望对你有帮助。

    【讨论】:

    • 感谢您的建议。我已经通过并仔细检查了所有内容。所有数据都正确发布到数据库,一切似乎都在工作,除了 ajax 没有收到响应,我被重定向到 URL。
    • 您能否详细说明“我正在被重定向到 URL”这一行,因为我没有得到您想说的内容?您从哪个 URL 获得重定向以及如何检查结果是否已插入数据库。 还要检查另一点,如果您的任何用户输入数据包含特殊字符(在本例中为“&”),则 JS 变量“dataString”将无法正常工作。 请检查这些点。谢谢
    【解决方案3】:

    对于初学者,if(msg == 1) 不会是 == 1,因为您获取的是字符串,所以它会是 b if(msg == '1')

    你在哪里

    var dataString = 'area='+ area + '&january=' + january + '&target=' + target + '&achieved=' + ach + '&comments=' + comments + '&ci_token=' + token;
    

    将其更改为像这样的对象:

    var dataObject = {
        area : area,
        january : january,
        target : target,
        achieved : ach,
        comments : comments,
        ci_token : token
    }
    

    然后在ajax请求中改成dataObject

    调试

    • 火狐:firbug。
    • 如果您使用 chrome 点击Ctrl+Shift+J 来打开 JavaScript 控制台并进行调试。查看您发送的所有标头和数据,您可以使用console.log(varaible) 跟踪变量的值。

    【讨论】:

    • 感谢关于字符串被传回的建议 - 我也改变了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2017-12-23
    • 2011-10-11
    • 2014-11-22
    • 1970-01-01
    • 2010-09-20
    • 2012-02-25
    相关资源
    最近更新 更多