2012-01-05 111 views
0

我从json post使用jquery接收null。按顺序查看我的代码。

用户填写此表,并提交:

<form name="newsletterSignup" id="newsletterSignup" method="post"> 

     <input type="text" name="firstName" id="firstName" type="text" autocomplete="off" placeholder="Enter your name" /> 

     <input type="text" name="email" id="email" type="text" autocomplete="off" placeholder="Enter a valid email address"/> 

     <input type="submit" name="newsletterSubscribe" id="newsletterSubscribe" value="Sign me up now!" /> 

    </form> 

那么这是运行:

var BASE_URL = 'http://www.thegurucoder.com/'; 

$('#newsletterSignup').submit(function() 
{ 

    var ajaxURL = BASE_URL + '_php/ajax/newsletterSubscribe.php'; 

    $.ajax({ 
     type: 'POST', 
     url: ajaxURL, 
     data: { firstName:$('#newsletterSignup #firstName').val(), email:$('#newsletterSignup #email').val()}, 
     dataType: 'json', 
     success: function(data){ 

      alert(data); 

      if(data.redirect == 'true') 
      { 

       window.location = data.url; 

      } 
      else 
      { 

       $(this).notify({prependTo:'#master', type:'negative', message:data.message, delay:3200, animation:'slide'}); 

      } 

     } 
    }); 

    return false; 

}); 

这反过来又运行此:

function newsletterSubscribe() 

{ 

if(isset($_POST['newsletterSubscribe'])) 
{ 

    header('Content-Type: application/json'); 

    $db = new Connection(DB_HOST, DB_USER, DB_PASS, DB_NAME); 

    $firstName = $_POST['firstName']; 
    $email = $_POST['email']; 

    if($email != '') 
    { 

     if(isDuplicateValue('subscribers', 'email', $email)) 
     { 

      echo json_encode(array(
       'message' => 'You have already subscribed to this newsletter.', 
       'redirect' => 'false' 
      )); 

     } 
     else 
     { 

      $parameters = array(
       'table' => 'subscribers', 
        'fieldsAndValues' => array(
        'firstName' => $firstName, 
        'email' => $email, 
        'addedDate' => datetime() 
        ) 
      ); 

      $db->insert($parameters); 

      echo json_encode(array(
       'redirect' => 'true', 
       'url' => BASE_URL.'subscribed' 
      )); 

     } 

    } 
    else 
    { 

     echo json_encode(array(
      'message' => 'You did not enter a valid email address.', 
      'redirect' => 'false' 
     )); 

    } 

} 

} 

而问题是:

Uncaught TypeError :无法读取属性'重定向'为空

这些是我在检查员中获取的标题。

Request URL:http://www.thegurucoder.com/_php/ajax/newsletterSubscribe.php 
Request Method:POST 
Status Code:200 OK 
Request Headersview source 
Accept:application/json, text/javascript, */*; q=0.01 
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Content-Length:17 
Content-Type:application/x-www-form-urlencoded 
Cookie:PHPSESSID=f3015d3c6fa08e53fc562477da0f563f 
Host:www.thegurucoder.com 
Origin:http://www.thegurucoder.com 
Referer:http://www.thegurucoder.com/blog 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7 
X-Requested-With:XMLHttpRequest 
Form Dataview URL encoded 
firstName: 
email: 
Response Headersview source 
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Connection:close 
Content-Encoding:gzip 
Content-Language:en-UK 
Content-Length:20 
Content-Type:text/html; charset=UTF-8 
Date:Thu, 05 Jan 2012 15:21:54 GMT 
Expires:Thu, 19 Nov 1981 08:52:00 GMT 
Pragma:no-cache 
Server:Apache/2.2.16 (Unix) mod_ssl/2.2.16 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 
Vary:Accept-Encoding 
X-Powered-By:PHP/5.2.14 

回答

1

与您的代码的问题是,你是不是在发布“新闻速递”字段中的AJAX请求,但对php文件你检查“新闻速递”你的PHP文件,如果条件为,如果(isset ($ _POST ['newsletterSubscribe']))。因此,在PHP代码变化if(isset($_POST['newsletterSubscribe']))if(isset($_POST['firstName']))

,这将肯定工作。

+0

你摇滚!我讨厌这样就好像缺少一个逗号,谢谢你帮点的问题!!!!!从没有Ajax的真实形式转换,所以完全错过了!再次感谢! – 2012-01-05 16:25:09

+0

大声笑,欢呼队友:) – 2012-01-05 16:35:55

1

您的名字和电子邮件字段没有设置。尝试移除jquery函数以抓取ajax请求之外的那些值。目前,您将代码作为数据散列的一部分进行传递。

var first_name = $('#newsletterSignup > #firstName').val(); 
var email = $('#newsletterSignup > #email').val(); 
$.ajax({ 
     type: 'POST', 
     url: ajaxURL, 
     data: { firstName:first_name, email:email}, 
     dataType: 'json', 
     ... 
}); 

+0

谢谢老兄,但他们正在设置问题反正! – 2012-01-05 16:24:28