对象不支持属性或方法'替换'

时间:2011-10-04 11:53:27

标签: javascript jquery

我的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'。但是替换函数正在使用字符串变量。

我的JQuery ver是1.6.4

请帮忙。

由于 的Vivek

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

响应的类型显然不是类型字符串的对象。尝试将其解析为字符串或查看当前正在返回的对象内部的内容并以正确的方式使用它。换句话说...看看你的方法“GetComponentsValuesAgainstOilValue”正在返回给客户端。这可能是你的响应对象(JSON)中的内容。

答案 2 :(得分:1)

成功回调所采用的数据参数根据dataType参数进行格式化。在你的情况下 - “json”,所以你的数据是一个对象。

答案 3 :(得分: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>