对象不支持属性或方法“replace”

5

我在我的JavaScript代码中遇到了一个奇怪的错误。

以下是代码示例:

function FetchData()
{
var selValue=$("select[id$=ddlComponents]").val()
    var param=$.param({ID:selValue});

    var method="proxy.aspx/GetComponentsValuesAgainstOilValue";

$.ajax({
    type: "POST",
    url: method,
    data: param,
    contentType: "application/json",
    dataType: "json",
    success: function(response) {

    if (response.replace(/"/g, '') == '{d:[]}') 
    {
         response = eval('(' + response + ')').d;
     }

    },
    error: function(xhr,error,status)
    {   
        alert(error);
    }
  });

以下代码行出现错误:

它会给我一个错误:

if (response.replace(/"/g, '') == '{d:[]}') 
    {
         response = eval('(' + response + ')').d;
    }

对象不支持属性或方法'replace'。但是replace函数在字符串变量中可以正常工作。

我的JQuery版本是1.6.4。

请帮忙解决。

谢谢, vivek

4个回答

5

response已经是一个对象了,您不需要自己进行任何JSON解析。


2

响应类型显然不是字符串类型的对象。尝试将其解析为字符串,或查看当前返回的对象中包含什么,并以适当的方式使用它。换句话说……查看您的方法“GetComponentsValuesAgainstOilValue”向客户端返回了什么。这可能是您当前响应对象中的内容(以JSON格式)。


1

success回调函数所接受的data参数是根据dataType参数进行格式化的。在你的情况下 - “json”,所以你的数据是一个对象。


@Baszz:我的函数返回的响应是一个List<自定义类>。 - V.B

0

某些版本的JQuery不支持该方法。您需要获取以下版本的JQuery

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接