我试图在JSON属性值上调用startsWith()字符串函数:
{"消息":" XYZABC"}
SELECT
tblReceipts.ID,
tblClient.ClientID,
tblClient.ClientName,
tblReceipts.DateRec,
tblReceipts.Type,
tblReceipts.Amount,
tblReceipts.SerialNo,
[Forms]![frmDisclosure]![Client] As CurrentClientID
FROM
tblReceipts
INNER JOIN
tblClient
ON tblReceipts.ClientLookup = tblClient.ClientID
WHERE
(((tblClient.ClientID)=IIf([Forms]![frmDisclosure]![Client]=661,417,[Forms]![frmDisclosure]![Client])))
ORDER BY
tblClient.ClientName, tblReceipts.DateRec DESC;
但是我收到了错误:
对象xyzabc没有方法' startsWith'
我该怎么做?
代码在服务器端运行,在Node.js上运行
答案 0 :(得分:1)
显然,Js有字符串的startsWith函数。但是,使用您自己的函数来查看字符串是否以值开头应该不会导致错误。
function StartsWith(s1, s2) {
return (s1.length >= s2.length && s1.substr(0, s2.length) == s2);
}
var jsonResponse = JSON.parse(httpResponse.text);
var stringMessage = jsonResponse.message.toString();
if(StartsWith(stringMessage,'xyz')) {
//Doing Stuff!
}
答案 1 :(得分:1)
您的浏览器可能不支持startsWith()
功能,因此您可以使用RegExp
来解决此问题......
var jsonObject={message:"xyzHELLO"};
var regex=new RegExp("^xyz");
if(regex.test(jsonObject["message"])){
alert("hello");
}
<强> [编辑] 强>
如果您想在每个startsWith()
中添加功能string
,可以像这样添加
if (String.prototype.startsWith !== "function") {
String.prototype.startsWith = function (searching) {
var regex = new RegExp("^" + searching);
if (regex.test(this.toString())) {
return true;
}
else {
return false;
}
}
}
之后你就可以这样使用:
var jsonObject = { message: "xyzHELLO" };
if (jsonObject["message"].toString().startsWith("xyz")) {
alert("start with");
}
else {
alert("not start with");
}
<强> [编辑] 强>
if (String.prototype.startsWith !== "function") {
String.prototype.startsWith = function (searching) {
if (this.toString().indexOf(searching) == 0) {
return true;
}
else {
return false;
}
}
}
根据@nnnnnn的评论,我也认为如果我们使用JavaScript
的原生函数,感谢@nnnnnn,这是一个好习惯。
答案 2 :(得分:1)
请仔细检查您输入的JSON。您的代码就像httpResponse.text
中具有正确JSON输入的魅力一样。
var json = '{"message": "xyztest"}';
var jsonResponse = JSON.parse(json);
var stringMessage = jsonResponse.message.toString();
if(stringMessage.startsWith('xyz')) {
alert('It works!');
}
另外,请确保您使用的浏览器支持startsWith
方法。 Here您可以找到包含所有支持的浏览器的列表。
如果您需要解决浏览器兼容性问题,可以使用广泛支持的indexOf
方法。
if(stringMessage.indexOf('xyz') === 0) {
alert('It works!');
}
HERE is a Fiddle两种情况。