2015-06-23 2 views
0

В настоящее время я пытаюсь получить простой демо уходящий в приложении сырым, используя канал общественного OData на http://services.odata.org/V4/(S(jskq43fsvrxbzaf2jzhboo13))/OData/OData.svc/ProductsКак обновить общедоступный канал OData для чтения и записи на сайте services.odata.org?

работы данных GET-тины, однако я не могу обновить данные, нажав на кнопку, и получить 501 (Не реализовано). Я считаю, что это касается необходимости включения CORS. Пожалуйста, см. Мою скрипку. Заранее спасибо!

var requestSettings = { 
 
    url: "http://services.odata.org/V3/(S(ettihtez1pypsghekhjamb1u))/OData/OData.svc/Products(" + key + ")", 
 
    method: "POST", 
 
    headers: { 
 
    "X-Http-Method": "PATCH", 
 
    'accept': "application/json;odata=verbose" 
 
    }, 
 
    'contentType': "application/json; charset=utf-8", //content-length not required 
 
    datatype: 'json', 
 
    data: JSON.stringify(values), 
 
    success: function updateSuccess() { 
 
    deferred.resolve(); 
 
    alert("successful update"); 
 
    }, 
 
    error: function updateError() { 
 
    deferred.reject(); 
 
    alert("un-successful update"); 
 
    } 
 
}; 
 

 
$.ajax(requestSettings);

У меня есть JSFiddle здесь: https://jsfiddle.net/jf713jf/ybLg1b4h/4/

+0

Ваша скрипка не работает ... есть некоторые ошибки в консоли – Sergey

+0

Извинения за отправку неработающей скрипки. Я думаю, что JSFiddle не хочет, чтобы что-то было загружено без https. Попробуйте это JSBin: http://jsbin.com/vohede/edit?html,js,console,output –

ответ

0

Рассмотрим использование DevExpress.data.ODataStore, который обеспечивает логику доступа OData службы.

Поскольку вы работаете с четвертой версией службы OData, параметры конструктора ODataStore хотели бы, что:

new DevExpress.data.ODataStore({ 
    url: "http://services.odata.org/V4/(S(jskq43fsvrxbzaf2jzhboo13))/OData/OData.svc/Products", 
    key: "ID", 
    keyType: "Int32", 
    version: 4, 

    // To overcome the cross-origin issue 
    jsonp: true 
}); 

Надеется, что это помогает.

+0

Спасибо, но это не работает. Я переключился на использование ODataStore, но по-прежнему получаю ту же ошибку 501 в консоли. См. JSBin, который я опубликовал выше. Благодаря! –

+0

Я знаю. Это потому, что ребята OData теперь работают только для четвертой версии и версии WebAPI. Поэтому я предлагаю вам протестировать свой код в последней версии сервисного примера OData 4: TripPin. Посмотрите: http://jsfiddle.net/Seteh/x7uL2myn/ – seteh

+0

Хорошо, я использую эту услугу сейчас. Теперь, когда я отправляю обновление, я получаю . Заголовок «Нет» Access-Control-Allow-Origin »присутствует на запрошенном ресурсе. Следовательно, для него не разрешен доступ к сайту« http://null.jsbin.com ». ответ имел код статуса HTTP 400. " , и если я включу «Access-Control-Allow-Origin»: «http://jsbin.com» ответ: Поле заголовка запроса Access-Control-Allow-Origin не разрешено Access-Control-Allow- Заголовки. –