2013-06-14 5 views
2

Im пытается выполнить функцию PHP с помощью AJAX, но функция не отвечает, Если я использую хром, чтобы увидеть результат сети плохого получить этотпростого Ajax POST не выполняет функцию PHP

Edit: Im работает этот местный с WAMP

manageusers.php 
/geopedia/core 
POST 
200 
OK 
text/html 
jquery-1.10.1.min.js:6 
Script 
850 B 
625 B 
7 ms 
4 ms 

Так не должно работать?

Ajax функции

$(document).ready(function() { 
    $('#facebook').click(function() { 
     var first_name = $('#first_name').val(); 
     var last_name = $('#last_name').val(); 
     var username = $('#username').val(); 

     $.ajax({ 
      url: 'core/manageusers.php', 
      type: 'POST', 
      data: { 
       facebook:first_name, 
       last_name:last_name, 
       username:username 

      }, 
     }); 
    }); 
}); 

EventHandler

if(isset($_POST['facebook'])){ 
echo("inside"); 
include_once('core/class.users.php'); 
$users = new Users(); 

$first_name = $_POST['first_name']; 
$last_name = $_POST['last_name']; 
$username = $_POST['username']; 

$fb_user = $users->fb_user($first_name,$last_name,$username); 
} 
+1

Вашего обработчик PHP просто устанавливает переменный, это все, что должно иметь какой-либо постоянный результат не делать. Как вы можете сказать, что это не запущено? – Barmar

+1

'.html()' должно быть '.val()', а также facebook: first_name, неправильно из-за – amigura

ответ

2

Это может помочь вам найти свою ошибку:

 $.ajax({ 
      url: 'core/manageusers.php', 
      type: 'POST', 
      data: { 
       facebook:first_name, 
       last_name:last_name, 
       username:username, 

      }, 
      success: function(mydata) { 
       alert(mydata); 
      } 
     }); 
    }); 
}); 

EventHandler

<?php 
//if(isset($_POST['facebook'])){ 
//echo("inside"); 
//include_once('core/class.users.php'); 
//$users = new Users(); 

$first_name = $_POST['first_name']; 
$last_name = $_POST['last_name']; 
$username = $_POST['username']; 

echo 'You sent: First: [' .$first_name. ']<br>'Last: [' .'$last_name. '] etc.'; 

//$fb_user = $users->fb_user($first_name,$last_name,$username); 
+0

Ну, честно говоря, я не думаю, что функция даже входит в мой php-файл. Ничто не выполняется. wtf :( – Dymond

+0

У меня есть, теперь я получаю кучу ошибок, смешная часть состоит в том, что если я использую общий метод form = «post», обработчик событий работает как шарм. – Dymond

+0

Пробовали ли вы изменения, которые я предлагаю выше? (1) сделайте свой PHP-файл эхом того, что ему отправлено, и (2) сделайте вашу AJAX-процедуру отображением того, что такое эхо-файл PHP. Это, по крайней мере, даст вам наглядное доказательство того, что подпрограммы AJAX/PHP работают. там вы можете начать сужаться, где происходит ваша ошибка. – gibberish

0

Почему бы вам не использовать параметр "успеха"?

.ajax({ 
     url: 'core/manageusers.php', 
     type: 'POST', 
     data: { 
      facebook:first_name, 
      last_name:last_name, 
      username:username, 

     }, 
     success: function (result) { 
      //insert some code here 
     }, 
    }); 
0
  1. Ваш PHP не дает никакого ответа;
  2. Даже если это так, ваш Javascript-код, похоже, не использует ;
  3. В вашей есть запятая после последней части объекта data. IE это не нравится;
  4. Наконец, вы не даете никакого ответа, кроме "inside" для всех запросов, независимо от успеха, и вы ничего не предпринимаете для обработки ответа в вашем Javascript-коде.
0

Revised репост ранее удален ответ:

Если вы работаете этот скрипт локально, попробуйте установить параметр DATATYPE в текст или JSON в запросе POST:. $ Ajax ({URL: «ядро/manageusers .php ', type:' POST ', dataType:' text ', data: {.......

@Alfie Да им фактически работает это локально, хорошо, что вы упомянули об этом. Я попытался добавить dataType, как json, так и текст, но не повезло. - Dymond

У меня были подобные кошмары в прошлом. Это связано с функцией сетевой безопасности: Файл политики перекрестных доменов. Wiki: http://en.wikipedia.org/wiki/Same_origin_policy

Я обнаружил, что в IE (но не firefox, когда я тестировал), настройка dataType на «текст» во время запроса jQuery (как описано выше) работала. Я также использовал параметр возврата success:..., как и другие. В противном случае попробуйте создать файл crossdomain.xml и поместив его в корневой каталог. «Рыхлая» (позволяет все) версия

А это будет выглядеть так:

`<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="all" /> 
    <allow-access-from domain="*" to-ports="*" /> 
    <allow-http-request-headers-from domain="*" headers="*" /> 
</cross-domain-policy>` 
Смежные вопросы