【发布时间】:2020-06-24 22:06:45
【问题描述】:
我的 AJAX 函数(在 coffeescript 中)正在返回值,但 error 和 success 回调均未触发。
$ ->
$('#sf_field').autocomplete
source: (request, response) ->
$.ajax
url: 'https://XXXXX.my.salesforce.com/services/data/v48.0/search/suggestions'
type: 'GET'
contentType: 'application/json'
cache: false,
crossDomain: true
dataType: 'json'
beforeSend: (xhr) ->
xhr.setRequestHeader 'Authorization', 'Bearer XXXX.XXXXX'
return
data: {
q: request.term,
sobject: 'Contact'
}
success: (data) ->
console.log "success"
alert "success"
json = $.parseJSON(data)
error: () ->
console.log "error"
alert "error"
complete: () ->
console.log "complete"
alert "complete"
select: (event, ui) ->
$("#sf_id").val(ui.item.id)
return
我在 firefox 控制台中看到,XHR 结果是正确的 JSON 格式(在 jsonlint 上验证),但回调似乎没有被触发,我在 UI 中看不到建议(甚至没有日志消息控制台确实出现了)。
浏览器 XHR 响应窗口生成的 JSON:
{
"autoSuggestResults":[{"attributes":{"type":"Contact",
"url":"/services/data/v48.0/sobjects/Contact/XXXXAU"},
"Id":"XXXXXX01uQoVQAU",
"Name":"Martin Aaaaaa"},
{"attributes":{"type":"Contact",
"url":"/services/data/v48.0/sobjects/Contact/XXXXuQoZQAU"},
"Id":"XXXXXZQAU",
"Name":"Martin Bbbbbb"},
{"attributes":{"type":"Contact",
"url":"/services/data/v48.0/sobjects/Contact/XXXXojQAE"},
"Id":"XXXXXojQAE",
"Name":"Martin Cccccc"},
{"attributes":{"type":"Contact",
"url":"/services/data/v48.0/sobjects/Contact/XXXXQn5QAE"},
"Id":"XXXXXQn5QAE",
"Name":"Thomas Martin Dddddd"},
{"attributes":{"type":"Contact",
"url":"/services/data/v48.0/sobjects/Contact/XXXXQv7QAE"},
"Id":"XXXXX0001uQv7QAE",
"Name":"Martin Eeeeee"}],
"hasMoreResults":true,
"meta":{"nameFields":[{"entityApiName":"Contact",
"fieldApiName":"Name"}],
"secondaryFields":[]}
}
我尝试过各种数据类型:(jsonp、text、html),但这无济于事 感谢您的提示
【问题讨论】:
-
success和其他回调应该在$ajax下缩进 -
我一辈子都无法理解为什么人们在 ES6 上使用 coffeescript。
标签: javascript jquery ruby-on-rails ajax salesforce