Skip to content

Conversation

@c0achmcguirk
Copy link

If you override ajaxSettings and change the method/type, it was
getting ignored in _ajax(). This uses the ajaxSettings method rather
than the one passed in, giving users the ability to talk to
non-traditional APIs.

Paul Oliver and others added 12 commits May 24, 2015 17:53
If you override ajaxSettings and change the method/type, it was
getting ignored in _ajax(). This uses the ajaxSettings method rather
than the one passed in, giving users the ability to talk to
non-traditional APIs.
You can specify a callback on success/error in your ajaxSettings so you
can do something like:

var mySuccess = function(data, status, jqXHR) {
  console.log("success");
}

var myError = function(jqXHR, status, error) {
  console.warn("error");
}

var ajaxSettings = function(url, method) {
  return {
    url: url,
    type: method,
    successCallback: mySuccess,
    errorCallback: myError
  };
}
If your API is a bit goofy you can override the ajaxSettings in your
RESTAdapter so you can do things like:

--> POST URL-Encoded, receive JSON back:

  myModel.adapter = RESTAdapter.extend({
    ajaxSettings: function(url) {
      type: "POST",
      contentType: "application/x-www-form-urlencoded",
      dataType: "json"
      // ... snip other properties
    }
  });

--> PUT JSON encoded content, receive text back

  myModel.adapter = RESTAdapter.extend({
    ajaxSettings: function(url) {
      type: "PUT",
      contentType: "json",
      dataType: "text"
      // ... snip other properties
    }
  });
This was causing previously working calls to fail because now our ajax
calls have the Content-Type: header being added, making the server
return a 400 Bad Request error.
# Conflicts:
#	ember-model.js
#	packages/ember-model/lib/attr.js
#	packages/ember-model/lib/belongs_to.js
#	packages/ember-model/lib/has_many.js
#	packages/ember-model/lib/rest_adapter.js
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants