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

Object doesn't Support Property or Method 'replace'

本文关键字:方法 属性 替换 对象 不支持      更新时间:2023-09-26

我在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

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

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

成功回调的数据参数按照dataType参数进行格式化。在你的例子中- "json",所以你的数据是一个对象。

一些版本的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>