Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uses the method from ajaxSettings instead of passed in #424

Open
wants to merge 16 commits into
base: master
Choose a base branch
from

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