2014-11-20 2 views
-1

Извините, я пытаюсь поймать мой гость и сохранить его с помощью яваскрипта Ajax поста ..AJAX сообщение JQuery не работает CORS

Он отличается хост (между JS и сервером PHP). Это JavaScript:

<script language="Javascript" src="http://www.codehelper.io/api/ips/?js"></script> 
<script language="Javascript"> 
    var myip = codehelper_ip.IP; 
    var mycountry = codehelper_ip.Country; 
    var myurl = document.URL; 
    $.ajax({ 
     type: 'POST', 
     url: 'http://myhost.com/guest-catcher/guest-post.php', 
     crossDomain: true, 
     data: '{"ip":"'+myip+'", "country":"'+mycountry+'", "page":"'+myurl+'"}', 
     dataType: 'json', 
     success: function(responseData, textStatus, jqXHR) { 
      alert("success"); 
     }, 
     error: function (xhr, status, error) { 
      alert(xhr.responseText); 
     } 
    }); 
</script> 

И код на стороне сервера:

<?php 

$ip = ""; 
if ($_POST['ip']) { 
    $ip = $_POST['ip']; 
} 
$country = ""; 
if ($_POST['country']) { 
    $country = $_POST['country']; 
} 
$page = ""; 
if ($_POST['page']) { 
    $page = $_POST['page']; 
} 

//Start Save DB 
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name); 
$sql = "INSERT INTO blog_guest (ip_address, country, page) VALUES ('" . $ip . "', '" . $country . "','" . $page . "')"; 
if ($ip != "" || $country != "" || $page!= "") { 
    if ($conn->query($sql) === TRUE) { 
    } else { 
     echo '<script>alert("' . $conn->error . '")</script>'; 
    } 
} 
$conn->close(); 
//End Save DB 

Ошибка в браузере консоли:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at myhost.com/guest-catcher/guest-post.php. This can be fixed by moving the resource to the same domain or enabling CORS. 
+1

Какая ошибка? – Matheno

+0

Вы не возвращаете JSON со своего сервера –

+0

Просто попробуйте декодировать данные json в php-файле, используя эту функцию. json_decode(); – Lakhan

ответ

0

Ваш data вариант является неправильным. Это должен быть объект Javascript, а не строка JSON.

data: {"ip": myip, "country": mycountry, "page": myurl}, 

Кроме того, ваш скрипт сервер не возвращает JSON, так что вы не должны иметь:

dataType: 'json', 
+0

Все еще не работает, сэр. Я видел ошибку, подобную этой, в scribefire: запрос на перекрестный запрос заблокирован: политика одинакового происхождения запрещает чтение удаленного ресурса на myhost.com/guest-catcher/guest-post.php. Это можно устранить, переместив ресурс в тот же домен или включив CORS. Это проблема? – toha

+0

Если сервер не разрешает AJAX с перекрестным происхождением, вы ничего не можете сделать в клиентском коде. – Barmar

+0

У меня есть заголовок («Access-Control-Allow-Origin: OPTION»); на guest-post.php, но все равно не работает. Как сделать сервер разрешенным ajax? – toha

0

Вы должны преобразовать данные, как это: data=JSON.stringify(your data);.

Пример:

var d = {...}; # your dict. 
$.ajax({      
    type:'post', 
    contentType:'application/json', 
    url:type url here, 
    dataType:'json', 
    data:JSON.stringify(d), 
    beforeSend:function(){ 

    }, 
    success:function(){ 

    } 
}); 
-2
$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: { name: "John", location: "Boston" } // or data: "name=" + value + "location=" + value 
}) 
+0

Это было отмечено как низкокачественное. Возможно, вам следует отформатировать код и добавить какое-то объяснение о том, что делает ваш код, или ваш ответ может быть удален сообществом. – nalply

0

Пожалуйста, замените код Ajax с этим и проверить.

$.ajax({ 
    type: 'POST', 
    url: 'http://myhost.com/guest-catcher/guest-post.php', 
    crossDomain: true, 
    data: 'ip=' + myip + '&country=' + mycountry + '&page=' + myurl, 
    success: function(responseData, textStatus, jqXHR) { 
     alert("success"); 
    }, 
    error: function (xhr, status, error) { 
     alert(xhr.responseText); 
    } 
}); 
+0

Все еще не работает, сэр. Я видел ошибку, подобную этой, в scribefire: запрос на перекрестный запрос заблокирован: политика одинакового происхождения запрещает чтение удаленного ресурса на myhost.com/guest-catcher/guest-post.php. Это можно устранить, переместив ресурс в тот же домен или включив CORS. Это проблема? – toha

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