0

我正在使用 javascript 和 jquery 使用他们的 rest api 通过 parse.com 发送一个简单的文本推送通知。这有效: -

$.ajax({
    type: 'POST',
    headers: {
        'X-Parse-Application-Id': "1234567890",
        'X-Parse-REST-API-Key': "1234567890"
    },
    url: "https://api.parse.com/1/push",
    data: '{"channel": "","type":"ios","expiration_interval":86400,"data":{"alert":"canned alert","badge" :0,"sound":""}}',
    contentType: "application/json"
});

但这不是:-

 var my_msg = "canned alert";
 $.ajax({
     type: 'POST',
     headers: {
         'X-Parse-Application-Id': "1234567890",
         'X-Parse-REST-API-Key': "1234567890"
     },
     url: "https://api.parse.com/1/push",
     data: '{"channel": "","type":"ios","expiration_interval":86400,"data":{"alert":my_msg,"badge" :0,"sound":""}}',
     contentType: "application/json"
 });

我找不到用变量而不是“罐头警报”替换成功发送警报的方法。我不是经验丰富的程序员,但即使是 parse.com 的 tesch 支持也无法解释原因;任何人都可以提出解决方案吗?

4

3 回答 3

2

从第二个片段中的单引号中取出 my_msg 变量,它的行为应该与第一个完全相同:

data: '{"channel": "","type":"ios","expiration_interval":86400,"data":{"alert":'+my_msg+',"badge" :0,"sound":""}}',

您编写第二个片段的方式看起来像是将 JSON 字符串与对象文字混淆了。

于 2013-03-18T20:55:46.387 回答
0

您可以使用JSON.stringify从普通对象构建 JSON:

var my_msg = "canned alert";
$.ajax({
  type: 'POST',
  headers: {'X-Parse-Application-Id':"1234567890",'X-Parse-REST-API-Key':"1234567890"},
  url: "https://api.parse.com/1/push",
  data: JSON.stringify({
    "channel": "",
    "type":"ios",
    "expiration_interval": 86400,
    "data":{
      "alert": my_msg,
      "badge" :0,
      "sound":""
    }
  }),
  contentType: "application/json"
});

使用JSON.stringify将确保“my_msg”中的任何特殊字符都将被正确转义,从而保证您的 JSON 有效。

于 2013-03-18T20:56:28.217 回答
0

您可以将数据作为对象传递,不需要任何引号,jQuery 会处理它:

var my_msg = "canned alert";
$.ajax({
    type: 'POST',
    headers: {
        'X-Parse-Application-Id': "1234567890",
            'X-Parse-REST-API-Key': "1234567890"
    },
    url: "https://api.parse.com/1/push",
    data: {
        channel: "",
        type: "ios",
        expiration_interval: 86400,
        data: {
            alert: my_msg,
            badge: 0,
            sound: ""
        }
    },
    contentType: "application/json"
});
于 2013-03-18T20:58:43.860 回答