2011-09-08 2 views
0

Я смотрю на это в течение 6 часов. Я не понимаю.Почему мой jquery.ajax() не срабатывает с успехом или ошибкой?

$.ajax({ 
    url: "http://www.band.dev:8888/datafeeder/hello_world", 
    success: function(data) { 
     alert (data); 
    }, 
    error: function(request, status, error) { 
     alert(status + ' - ' + error); 
    } 
}); 

Я использую MAMP локально, и когда я нажимаю на URL-адрес, это echo «hello world», без проблем. Когда я запускаю это, я получаю диалоговое окно с «error -». Я попытался добавить dataType: 'html' там, без помощи. Мысли?

- EDIT -

Так что это моя Актуальная проблема. Когда я запускаю это, ни успех, ни ошибка не срабатывают, и я вижу, что JSON корректен, когда я попал прямо в URL. (Кстати, относительный URL затруднительное работал на выше кусочке кода.)

$("#member_type").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "/datafeeder/get_member_types/json", 
       dataType: "jsonp", 
       data: { 
        //maxNum: 12, 
        searchString: request.term 
       }, 
       search: function(event, ui) { 
        alert('searching'); 
       }, 
       success: function(data) { 
        alert (data); 
        response($.map(data, function(item) { 
         return { 
          label: item.type, 
          value: item.id 
         } 
        })); 
       }, 
       error: function(request, status, error) { 
        alert (status + ' - ' + error); 
       } 
      }); 
     } 
}); 

ответ

2

Вы, вероятно, попав same origin policy ограничение, которое запрещает вам от отправки AJAX запросов в различных областях, чем один хостинг скрипт. Лучший способ гарантировать, что вы не нарушаете эту политику, чтобы использовать относительные адреса для вашего AJAX звонки:

$.ajax({ 
    url: "/datafeeder/hello_world", 
    success: function(data) { 
     alert (data); 
    }, 
    error: function(request, status, error) { 
     alert(status + ' - ' + error); 
    } 
}); 

Для этого запроса AJAX для работы, страницы HTML, на котором размещается этот Javascript должен быть размещен на http://www.band.dev:8888.

+0

Я думал об этом, потому что мой исходный фон был во Flash-разработке, а политики crossdomain настолько необходимы и распространены. Но с этим я увидел http://jqueryui.com/demos/autocomplete/#remote-jsonp для ввода автозаполнения, и они вытягиваются из сценария, размещенного снаружи. Это только из-за формата JSONP, который они возвращают? – Tim

+0

@Tim, для работы JSONP ваш сервер должен возвращать JSONP, а не '' hello world''. Взгляд JSONP может выглядеть так: 'someCallback ({value: 'hello world'}), где, конечно, вы можете персонализировать имя' someCallback', передав его как параметр запроса. –

+0

http://stackoverflow.com/questions/2887209/what-are-the-differences-between-json-and-jsonp/2887218#2887218 это может помочь понять разницу – Rafay

Смежные вопросы