2016-04-26 3 views
2

Сообщество доброго утра,От JS до PHP; еще одна проблема CORS (похоже,)

В настоящее время я пишу плагин (управление учетными записями для dev-tool под названием «Construct 2» (scirra.com)) в Javascript, который использует бэкэнд PHP и связывается с ним через AJAX.

Когда сценарий бэкенд содержит только простые задачи, такие как ...

<?php header("Access-Control-Allow-Origin:*"); // Allow all origins 

$InputAction = $_POST["Action"]; // Eventhandler 

if ($InputAction == "Register") { 
     echo("-400") } ?> 

все работает отлично. Но когда я положил в немного более сложный материал, который я хотел включить, Im всегда получаю CORS отказ:

XMLHttpRequest cannot load http://api.proxy.wtf/debug.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.0.14:50001' is therefore not allowed access. The response had HTTP status code 500. 

Код я использовал для вышеуказанной ошибки:

<?php 
header("Access-Control-Allow-Origin:*"); // Allow all origins 

require('includes/config.php'); // Prerequisite 

/** Numeric callbacks (!negative values!) 
-200 Registration successful; validation mail sended 
-250 Username OK 

-300 Username too short 
-301 Username already in use 
-302 Password too short 
-303 Invalid email address 
-304 Email already in use 
-305 Error while registration 

-400 Illegal request 
**/ 

$InputAction = $_POST["Action"]; // Eventhandler 

$InputUsername = $_POST["Username"]; // Requesting username 
$InputMailaddress = $_POST["Mailaddress"]; // Requesting mail address 
$InputPassword = $_POST["Password"]; // Requesting password 

if ($InputAction == "Register") { // Action: Register 
    if(strlen($InputUsername) < 3){ // Check Username length 
     $error[] = 'Username is too short.'; 
     echo("-300"); 
    } else { // Check if username already exists 
     $stmt = $db->prepare('SELECT username FROM members WHERE username = :username'); 
     $stmt->execute(array(':username' => $InputUsername)); 
     $row = $stmt->fetch(PDO::FETCH_ASSOC); 
     echo("-250"); 

     if(!empty($row['username'])){ // If username already taken 
     $error[] = 'Username provided is already in use.'; 
     echo("-301"); 
     } 
    } 
} 
else { 
    echo("-400"); 
} 
?> 

Имеет кто-то идея для меня, что я делаю неправильно? Синтаксис не содержит ошибок (насколько я вижу). Если я не специалист в php/ajax, я думаю, что некоторые умы здесь могут помочь мне/указать мне, где моя ошибка. Im готовы учиться - так что если Im делать что-то вроде общей ошибки, пожалуйста, скажите мне: s

Имейте большой день, Тан

Edit: Херес JS часть http://pastebin.com/iABkRmt0 (reuqesting материал начинается в строке ~ 115 - ее полный JS SDK скрипт для C2, жаль, что - но, по крайней мере, его полная;))

+0

Вы пробовали 'header ('Access-Control-Allow-Origin: http://192.168.0.14:50001');'? – Chay22

ответ

-1

Вы должны использовать JSONP,

Я даю вам пример использования JSONP, надеюсь, что это help u

$.ajax({ 
    url: "http://data.acgov.org/resource/k9se-aps6.json?city=Alameda", 
    jsonp: "$jsonp", 
    dataType: "jsonp" 
}).done(function(data) { 
    console.log("Request received: " + data); 
}); 
+0

Спасибо за ваш ответ - нужен ли JSONP, когда я хочу только вернуть числовое значение? Без JSONP он работал в другом плагине, но только когда часть PHP становится немного более «сложной», я получил ошибку:/ –

+0

Нет, вы этого не делаете, это то, что CORS для –

-1

Вы не упомянули о коде ajax .. это то, что запрос ajax также инициирован с того же URL-адреса или отдельно?

+0

Из другого места. Если его плагин не будет опубликован бесплатно, я хочу иметь «*» как источник. (Ive обновил первый пост, JS теперь включен внизу) –

+0

Отдельно, вопрос о CORS –

+0

Да, но havent Я установил CORS на * в первой строке для этого? Я делаю что-то принципиально неправильно или я просто где-то ошибаюсь? –

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

  • Нет связанных вопросов^_^