2012-05-17 2 views
0

JavaScriptCant получить значение обратно из PHP

$.ajax({ 
    type : 'POST', 
    url : 'post.php',   
    data: dataString, 
    success:function (data) { 
     if (data==null) { alert("darnit!!!!");}  
      //$("#response").append(data); 
      alert(dataString); 
     }   
    });  
}); 

в PHP файл только простой

print_r($_REQUEST); 

Также попытался

echo "got iT!"; 

Но ничего, не смотрел свыше пытались differant вещей, но нет удачи первый //alert (dataString); работает , но после success:function (data) Я не получаю никаких предупреждений - никаких ответов на странице!

Что я делаю неправильно?

+1

Как насчет firebug? Вы уверены, что отправлен запрос ajax? – zerkms

+0

@Grmn: Просто, чтобы вы знали, в текстовом редакторе есть кнопка «Пример кода», которая автоматически отступывает ваш код в 4 пробела. –

+2

У вас есть несоответствующие скобки, возможно, их исправление поможет? – Timm

ответ

0

В вашем фрагменте есть синтаксический эффект. Я не уверен, что это тоже в вашем реальном коде.

Обязательно используйте json_encode в вашем файле PHP и dataType: 'json' в jQuery.ajax. И всегда используйте обратный вызов error. Вы не хотите, чтобы ваше приложение становилось на неопределенное время замороженным, если что-то не удается.

Что-то вроде этого:

$.ajax({ 
    url: 'api.php',   
    data: { 
     action: 'greet', 
     foo: 'bar', 
     baz: 'quux' 
    }, 
    type: 'POST', 
    dataType: 'json', 
    success: function (response, textStatus, jqXHR) { 
     console.log(response); // DEBUG 
     if (response.error) { 
      alert('Greet Error: ' + response.error); 
     } else { 
      alert(response.greet); 
     } 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     console.log('AJAX Error', textStatus, errorThrown); // DEBUG 
     alert('AJAX Error: Request failed'); 
    }  
}); 

PHP:

<?php 
$input = $_POST; 
$response = array(); 

if (!isset($input['action'])) { 
    $response['error'] = 'Action parameter required'; 
} else { 
    if ($input['action'] === 'greet') { 
     if (!isset($input['foo']) || !isset($input['bar'])) { 
      $response['error'] = 'Invalid greet request'; 
     } else { 
      $response['greet'] = 'Welcome home, David!'; 
     } 
    } else { 
     $response['error'] = 'Unknown action'; 
    } 
} 

header('Content-Type: application/json; charset=utf8'); 
echo json_encode($response); 
+0

Ответ: ajax failed – Grmn

+0

@Grmn: Ну, со всем уважением, это ваша проблема. Проверьте свой отладчик и выясните, почему запрос не удался. Вероятно, ошибка вызвана вашим сервером или вашим кодом. У вас установлен PHP? Правильно ли путь к файлу? – Krinkle

+0

Я localhost на данный момент, Ubuntu (php5, mysqli) – Grmn

-1

Попробуйте это:

$.ajax({ 
    type : 'POST', 
    url : 'post.php',   
    data: dataString, 
    success:function (data) { 
     if (data===undefined) { alert("darnit!!!!");}  
      //$("#response").append(data); 
      alert(data); 
     }   
    });  
}); 

Также я хотел бы посмотреть в использовании json_encode на массив в файле PHP и возвращает объект JSON.

+0

Ill взгляните на json, но если он не будет предупреждать данные в функции успеха, я не получаю никакого ответа в функции успеха. – Grmn

+1

Я просто указывал, что вы использовали == вместо === в вашем операторе if, который является плохой привычкой и что вы будете пытаться предупредить данные, а не dataString, поскольку вы были в обратном вызове успеха. Если вы используете расширение firebug с браузером Firefox, которое должно помочь вам отладить ваш пост ajax. Скорее всего, возникает ошибка, вызывающая это не сообщение. – chapman84

+0

thx для исправления в отношении === – Grmn

0

JQuery, игнорирующий возврат данных, обычно означает, что он не понимает формат, который возвращается, или не знает, чего ожидать. Установите dataType в приемлемый формат, а также дважды проверьте, что ваш PHP-скрипт фактически отправляет что-то обратно на страницу в консоли Firebug.

+1

'Enclose 'dataString' в кавычки' почему? – pomeh

+0

@pomeh Извините, моя ошибка - автоматически принимаемая dataString была принята тип данных. Не следует публиковать сообщения по телефону ... Я отредактирую свой ответ. – nealio82

0

Первое: вы пропустили DATATYPE свойство из функции Ajax, рядом, вам нужно передать данные типа JSON, и вы имели синтаксическую ошибку в коде, попробуйте следующее:

$.ajax({ 
    type : 'POST', 
    url : 'post.php', 
    dataType: 'text',   
    data: { 
     data_to_pass: dataString 
    }, 
    success:function (data) { 
     if (data==null) { 
      alert("darnit!!!!"); 
     } else {  
      //$("#response").append(data); 
      alert(dataString); 
     }   
    });  
}); 

в PHP:

$dataString = $_POST['data_to_pass']; 
if($dataString) { 
    echo "got IT!"; 
} 
+0

Извините, попробовал обе вышеперечисленную работу ditn, также, как мне получить редактор «как» tinymce на моем экране, не вижу его – Grmn

+0

Что говорит об отладке браузера (F12)? Может быть, плохая связь с файлом php? –

+0

throw Компоненты. Исключение («запрос прерывается пользователем», Cr.NS_ERROR_NOT_AVAILABLE) nsPrompter.js (строка 457) – Grmn

0

Я хотел бы разделить следующее, и я думаю, что я решил эту проблему.

Кроме того, что я сделал ошибку, извлечение значений из формы немного неправильно. , так что первое предупреждение дало мне name=[Object name], теперь это было глупо.

Проблема с получением результатов, казалось, была проблемой с самой jquery, в моем случае. Я не знаю, есть ли у той же проблемы другие люди. Я заменил включенный файл jquery 1.7 на 1.4.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 

, чем со следующим кодом (только от $ .ajax).

var dataString = $("#contactForm").serialize(); 
$.ajax({ 
    type: 'POST', 
    url: './php/mail.php', 
    data: dataString, 
    success: function(msg){ 
     if (msg === 'sent'){ 
      $('#success').text('Message sent!'); 
     } else{ 
      $('#success').text('Mail Error. Please Try Again.!'); 
     } 
    } 
}); 

Теперь у меня он работает - и собираюсь немного подправить его к моим потребностям!

Thx все за помощь!

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