当前位置: 首页 > 面试题库 >

AJAX值发送错误

昝卓
2023-03-14
问题内容

嗨,我在下面的脚本中遇到了问题。我认为问题在于需要通过AJAX发送到php的数据。

jQuery的

$('.send').live("click", function(){

    $.ajax({

        url:'foobar.php',
        type:'post',
        data: 'id=' + $(this).attr('id'),
        dataType:'json',
        contentType: 'application/json; charset=utf-8',
        success: function(data) {

            switch (data.status)
            {
                case "a":

                    alert(data.text);

                    break;

                case "b":

                    alert(data.text);

                    break;

                }
            },
        error: function(XMLHttpRequest, textStatus, errorThrown) {

            alert ("error: "+textStatus);

            }
        })
    }

并且,PHP

$id = $_REQUEST['id'];

switch ($id) {

    case "foo":

        $data["status"] = "a";
        $data["text"] = "foo-foo";
        echo json_encode($data);

        break;

    case "bar":

        $data["status"] = "b";
        $data["text"] = "bar-bar";
        echo json_encode($data);

        break;

    }

但是,如果我这样做

//data: 'id=' + $(this).attr('id'),

并改变这个

$id = 'foo';

脚本工作正常。我需要做些什么才能使以上两个脚本都能正常工作?提前致谢。


问题答案:

我将我的评论作为答案。

除了使用已弃用的jQuery API外,其他人没有指出的是以下内容:

您在下一行中正在做什么:

contentType: 'application/json; charset=utf-8',

是您向服务器保证HTTP实体将是JSON字符串,而事实并非如此。它实际上是通常的百分位数编码的字符串。(a=b&c=d&e=f)。

如果删除该行,浏览器会将默认值Content-Type发送为application/x-www-url-form- encoded。这将触发PHP如此解析HTTP实体,并为您$_REQUEST正确填充数组。



 类似资料:
  • 我正在使用jQuery滑块插件。滑块的当前选定值应该用AJAX发送到服务器端脚本。 目前我有一个错误的行为。当前选择的值总是在用Ajax发送的值之前或之后的一个值。 例如:如果滑到值5/50,它将向服务器端脚本发送“6”而不是“5”。 我做了一把JS小提琴。只需在developers network选项卡下查看。

  • 问题内容: 我正在尝试完成一些ajax请求,以在不刷新的情况下将textarea插入数据库。这是我的代码: HTML: JS: 我的问题: 1)如何将文本区域的内容发送到onclick函数中? 2)我如何转义/ urlencode等。因此保留了换行符 问题答案: 您的代码有一些问题,例如用于串联 试试这个 -

  • 交互过程中,发送请求是第一步。那么,我们将如何构造一个请求呢? 这一章节,我们将一步一步来构建一个 Ajax 请求。学习本节,你将学会: 如何通过 XMLHttpRequest 和 ActiveXObject 来构造一个通用的 xhr 对象。 如何通过 xhr 对象来发送 GET、 POST 等请求。 Content-type 在 Ajax 数据发送中的作用。 那么,接下来让我们进入本节的学习吧。

  • 问题内容: 我正在Ajax调用中发送一些数据。值之一是设置为FALSE的布尔值。在Ajax调用的PHP脚本中,始终将其评估为TRUE。有任何想法吗? 在上面的Ajax中调用的脚本vote.php中,我检查了布尔值: 但条件始终满足。 问题答案: 帖子只是文字,文字在php中的评估结果为true。一种快速的解决方法是发送零而不是false。您也可以在PHP中用引号引起来。 然后,您可以传递正确/错误

  • 我正在尝试使用ajax发送post请求,但始终出现以下错误: XMLHttpRequest无法加载http://192.168.1.123:8080。对预检请求的响应无法通过权限改造检查:请求的资源上不存在“访问控制允许源”标头。因此不允许访问源“http://localhost:8080”。 这是我的代码