Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
如何使用Freshdesk API使用javascript创建带有自定义字段的新票证_Javascript_Angularjs_Freshdesk - Fatal编程技术网

如何使用Freshdesk API使用javascript创建带有自定义字段的新票证

如何使用Freshdesk API使用javascript创建带有自定义字段的新票证,javascript,angularjs,freshdesk,Javascript,Angularjs,Freshdesk,我有一个函数,当用户在表单上单击“提交”时会触发。所有内容都将提交到freshdesk,但自定义字段除外 我在控制器中使用Angular 1.4,所以ctrl是我的控制器。这是我的密码: function postTicket() { var formdata = new FormData(); var customFields = { "serial_number": ctrl.newTicket.serialnumber }; customFields = J

我有一个函数,当用户在表单上单击“提交”时会触发。所有内容都将提交到freshdesk,但自定义字段除外

我在控制器中使用Angular 1.4,所以ctrl是我的控制器。这是我的密码:

   function postTicket() {
  var formdata = new FormData();

  var customFields = {
    "serial_number": ctrl.newTicket.serialnumber
  };
  customFields = JSON.stringify(customFields);


  formdata.append('description', ctrl.newTicket.description);
  formdata.append('subject', ctrl.newTicket.subject);
  formdata.append('type', ctrl.newTicket.type);
  formdata.append('email', ctrl.newTicket.email);
  formdata.append('custom_fields', customFields);
  formdata.append('status', 2); // open
  formdata.append('priority', 1); // low

  supportResource.postTicket(formdata).then(
    results => {
      console.log('it worked! ', results);
      ctrl.formSent = true;
    },
    error => {
      console.log('something went wrong. ', error);
    });
}
以下是supportResource代码:

function postTicket(ticket) {
  return $q(function(fulfill, reject) {
    $http({
      url: `https://${MYACCOUNT}.freshdesk.com/api/v2/tickets`,
      method: 'POST',
      headers: {
        'Authorization': 'Basic ' + btoa(MYKEY),
        'Content-Type': undefined
      },
      data: ticket
    }).then(
      results => {
        fulfill(results.data);
      },
      error => reject(error));
  });
}
我返回了以下错误:“值集的类型为字符串。它应该是一个/键/值对”

我在这里举了一个例子:

我还看到:


但是这个例子使用的是CURL,我不知道如何使用FormData()发送数据。

我想在这里分享解决方案,以防其他人遇到这个问题。这是特定于freshdesk API及其对数据的预期方式的。表单数据具有非常简单的语法:

语法 此方法有两个版本:两个参数版本和三个参数版本:

  • formData.append(名称、值)
  • 追加(名称、值、文件名)
因此,通过将名称从字符串更改为将自定义字段名称引用为如下关联数组:
自定义字段[序列号]
,API了解正在使用的键,并能够读取表单数据

function postTicket() {
  var formdata = new FormData();

  formdata.append('description', ctrl.newTicket.description);
  formdata.append('subject', ctrl.newTicket.subject);
  formdata.append('type', ctrl.newTicket.type);
  formdata.append('email', ctrl.newTicket.email);
  formdata.append('custom_fields[serial_number]', ctrl.newTicket.serialnumber);
  formdata.append('status', 2); // open
  formdata.append('priority', 1); // low

  supportResource.postTicket(formdata).then(
    results => {
      console.log('it worked! ', results);
      ctrl.formSent = true;
    },
    error => {
      console.log('something went wrong. ', error);
    });
}