response.split(“,”)[0]在IE中不起作用

时间:2014-03-03 08:02:07

标签: javascript jquery ajax

我只是:

<script>
    $('#blah').on('click', function(){
        $.ajax({
            type: 'POST',
            url: 'ajax.php',
            data: {"xxx":"yyy", "zzz":"nnn"}, // my variables...
            success: function(response){
                // response = "success,123" from server side
                // so for accessing to the values "success" and "123" I just:
                status = response.split(",")[0];
                count = response.split(",")[1];
                // now "status" and "count" are undefined in IE while it's working in all other browsers
            }
        });
    });
</script>

如上所述,服务器对Ajax的响应是“success,123”。

用于访问值“success”和“123”我这样做:

status = response.split(",")[0];
count = response.split(",")[1];

现在statuscountIE中未定义,而在其他所有浏览器中都很好。

我该怎么做才能解决这个问题? 谢谢

2 个答案:

答案 0 :(得分:0)

虽然我不确定为什么IE会这样做而我现在无法真正测试,但更聪明的替代方案是使用JSON进行响应。如果使用PHP,json_encode可用于将简单数组转换为JSON:

<?php
echo json_encode(array('status' => 'success', 'count' => 123));

然后:

// your response originally looks like this:
// { status: 'success', count: 123 }

// you can define $.ajax with { dataType : 'JSON' } instead of:
response = $.parseJSON(response);
console.log(response.status);
console.log(response.count);

如果您不使用PHP,只需搜索使用您的语言的方法。

这也可以帮助您解决以后处理包含分隔符的响应的问题(例如,,中的句子)

答案 1 :(得分:0)

那是因为你还没有定义变量。而不是:

status = response.split(",")[0];

我会尝试

var status = response.split(",")[0];