无法从PHP获得价值

时间:2012-05-17 21:07:35

标签: php jquery post

的JavaScript

$.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!";

但是没有什么,一直在寻找尝试不同的东西,但没有运气 第一个//alert (dataString);有效 但在success:function (data)后我没有收到任何提醒 - 页面内没有回应!

我做错了什么?

5 个答案:

答案 0 :(得分:0)

忽略数据返回的JQuery通常意味着它不理解返回的格式,或者不知道会发生什么。将dataType设置为可接受的格式,并仔细检查您的PHP脚本是否实际将某些内容发送回Firebug控制台中的页面。

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

答案 1 :(得分:0)

首先:你从ajax函数中错过了dataType属性,接下来,你需要传递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!";
}

答案 2 :(得分:0)

您的代码段中有一个SyntaxError。我不确定这是否也在您的真实代码中。

请务必在PHP文件中使用json_encode,在jQuery.ajax中使用dataType: 'json'。并始终使用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);

答案 3 :(得分:0)

我想分享以下内容,我想我已经解决了这个问题。

除了我确实犯了一个错误,从表单中检索值有点不对。 所以第一个警报给了我name=[Object name],现在这是愚蠢的。

在我的情况下,没有得到结果的问题似乎是jquery本身的问题。 我不知道其他人是否有同样的问题。我用1.4补充了jquery 1.7的包含文件。

<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.!');   
        }
    }
});

现在我有了它的工作 - 并根据我的需要调整一下!

谢谢所有人的帮助!

答案 4 :(得分:-1)

试试这个:

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

另外,我会考虑在你的php文件中的数组上使用json_encode并返回一个json对象。