Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有parse.com的javascript/jquery/RESTAPI_Javascript_Jquery_Api_Rest_Parse Platform - Fatal编程技术网

带有parse.com的javascript/jquery/RESTAPI

带有parse.com的javascript/jquery/RESTAPI,javascript,jquery,api,rest,parse-platform,Javascript,Jquery,Api,Rest,Parse Platform,我使用javascript和jquery通过parse.com使用RESTAPI发送一个简单的文本推送通知。 这项工作:- $.ajax({ type: 'POST', headers: { 'X-Parse-Application-Id': "1234567890", 'X-Parse-REST-API-Key': "1234567890" }, url: "https://api.parse.com/1/push", d

我使用javascript和jquery通过parse.com使用RESTAPI发送一个简单的文本推送通知。 这项工作:-

$.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的支持也无法解释原因;有人能提出解决方案吗

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

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

按照编写第二个代码段的方式,您似乎混淆了JSON字符串和对象文字。

您可以使用
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是有效的。

您可以将数据作为对象传递,不需要任何引号,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"
});

您确定API正确地处理和解释HTTP参数吗?(可能吧,我不确定。)我总是这样使用它。我不确定它是否是JSONP,但POST应该可以。文档说明,
data选项可以包含形式为key1=value1&key2=value2的查询字符串,也可以包含形式为{key1:'value1',key2:'value2'}的对象。如果使用后一种形式,数据将转换为查询字符串
Yes,我知道jQuery本身就是这样工作的——我不知道调用的API(parse.com?)是否需要JSON blob或名称/值HTTP参数。(请注意,OP说发送一个完整的非动态JSON字符串是可行的。)你能详细说明一下你的答案吗?你能详细说明一下在这种情况下“不起作用”是什么意思吗?您是否返回了错误响应,或者请求成功但未发送推送通知?