【问题标题】:Unexpected end of input jquery using ajax使用ajax的输入jquery意外结束
【发布时间】:2020-03-27 20:37:02
【问题描述】:

我有以下 jQuery 脚本。

http://www.codeshare.io/aQxBp

得到错误:

SyntaxError: 输入意外结束

我的 js 文件在语法方面是正确的,不要遗漏任何右括号或左括号。感谢您的任何建议。

【问题讨论】:

  • 尝试从}http://www.codeshare.io/new中删除“codeshare.io/new
  • 嗯嗯,看来我不明白你的意思。你输入了http://www.codeshare.io/new 我应该再删除什么吗?
  • 您的代码现在正在运行。您的代码中未注释该网址。这会导致你的错误。
  • 顺便说一句,如果包含#emailtoinvite 没有问题,当删除该代码 sn-p 时问题仍然存在。
  • 实际上该网址不是我添加的。我知道这是怎么做到的。 :) 现在检查:codeshare.io/aQxBp

标签: javascript jquery xmlhttprequest


【解决方案1】:

这里是您告诉您的 ajax 调用期望接收 JSON。当没有收到 JSON 时,当 JSON.parse 尝试解析非 JSON 字符串时会抛出错误。 JSON本质上相当简单,但你必须是故意的。进行类似于此的 ajax 调用(注意 response.emailtoinvite):

jQuery.ajax({
    type: "POST", // HTTP method POST or GET
    url: "sendinvitation.php", //Where to make Ajax calls
    dataType: "json", // Data type, HTML, json etc.
    data: myData, //Form variables
    success: function(response) {
        alert(response.emailtoinvite);
    },
    error: function(xhr, ajaxOptions, thrownError) {
        //$(".btn.btn-primary").show(); //show submit button
        alert(thrownError);
    }

});

....sendinvitation.php 必须返回一个正确的 JSON 字符串。以下作品:

{emailtoinvite: "zilahi@gmail.com", idToInvite: 136}

这里需要注意的重要事项,所有字符串必须用双引号"" 括起来。此外,整个字符串必须包含在{} 中。数字可以不加引号。

同样需要注意的是,上面的语法不是正确的,但有时确实有效。正确的语法还要求您也将“密钥”用引号 "" 括起来:

{"emailtoinvite": "zilahi@gmail.com", "idToInvite": 136}

【讨论】:

  • 谢谢,我想我明白了,但仍然不知道要在我的代码中进行哪些更改才能使其正常工作,因为我只是得到如下 id:idToInvite: this.getAttribute("data-eventId")
  • 天哪。好的,所以从头开始。没关系。我需要知道 ajax 调用返回了什么。什么是“sendinvitation.php”echoing?这才是最重要的。
  • 其实 sendinvitation.php 是从 sql 中获取一些数据,然后调用一个简单的方法。我只能向您展示我已经在上面发布的来自网络的表单数据:emailtoinvite:zilahi@gmail.com idToInvite:136 我认为我确实遇到了导致错误的问题,即具有正确 JSON 的东西。你还需要什么?如果需要,我可以向您展示整个 php....
  • 是的,就是这样。你没有发回任何东西。问题在于 PHP,而不是 javascript。在您的 PHP 脚本中输入 echo '{"hello": "world"}'(仅用于测试目的)。您应该会发现您的 javascript 错误消失了。不过,您仍然需要使用 PHP。
【解决方案2】:
$.ajax({
            type: 'POST',
            dataType: 'JSON',
            url:"test.php",//<?php echo $_GET['url'] ?>,
            data: data,
            success: function(response) {
                if ($('#toggle').prop('checked')) {
                    $('.led-<?php echo $_GET[\'color\'] ?>').show();
                    $('.led-off').hide();
                } else {
                    $('.led-<?php echo $_GET[\'color\'] ?>').hide();
                    $('.led-off').show();
                }
            },
        });

【讨论】:

  • 解释用户代码的问题对您的回答有好处。另外,尝试将代码添加到代码格式中,并尽可能地进行缩进或代码格式化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
相关资源
最近更新 更多