Ajax返回null

时间:2014-10-24 09:15:40

标签: php jquery mysql ajax

我遇到Ajax响应问题。我试图通过mySql数据库中指定的ID号显示属性地址。我发现的问题是,当我将id的值设置为静态例如prop_id = 2时,就会从db成功检索到地址。但是当我想通过文本框中输入的 prop_id 进行搜索时,我一直收到空值。

html

       <td><label for="propertyId">Property Id:</label></td>
       <td><input name="p_propertyId" id="propertyId" onClick="suggestion_property_id()" onblur="get_property_address_byid()" size="40"></td> <!--onblur="get_idproperty()"-->
       <td><label for="prop_address">Property address:</label></td>
       <td><input name="p_address" id="prop_address" value="" size="40" readonly/></td>

AJAX

    var $propertyId = $('#propertyId').val();
       //alert($propertyId);
       $.ajax({
                 type: 'POST',
                 url: 'propertyId.php',
                 data: {
                      type:'prop_address',
                      $propertyId:$propertyId,
                      },
                      async: true,
                      dataType: 'text',
                      success: function(res1){
                            var results = eval(res1);
                            document.getElementById('prop_address').value = results[0];
                            //get_idbooking();
                            alert($propertyId);
                            console.log(res1);
                     },
               }); 
            }

php

if($type == 'prop_address'){
       $prop_address = "no address";
       $propertyId =$_POST['propertyId'];
       $propertyId=155;          
       $properties = get_address_by_propertyid($propertyId);

       for($i=0; $i<sizeof($properties); $i++){
              $address_prop = str_replace(' ', ' ', $properties[$i]['prop_address']);
              if(strpos($propertyId, $address_prop) !== false){
                     $prop_address = $properties[$i]['propertyId'];
                     break;
              }
       }
       $res1 = array($address_prop, $propertyId);
       echo json_encode($res1);
       //echo json_encode($address);
}

4 个答案:

答案 0 :(得分:1)

您在Ajax请求中发送的数据似乎是错误的 -

$propertyId:$propertyId,
^^^^^^^^^^^

应该是 -

propertyId:$propertyId,

答案 1 :(得分:0)

请务必使用例如print_r($_POST)检查服务器端的传入数据。看起来你正在发送:

data: {
    type:'prop_address',
    $propertyId:$propertyId,
}

但检查

$_POST['propertyId']

我认为他们不匹配。

答案 2 :(得分:0)

在您的ajax块中,您将$propertyId值作为名称和值传递。因此,如果它是155,例如,您的数据块实际上会以如下方式发送到服务器:

data: {
    type: 'prop_address',
    155: 155
}

如果您更新data块以正确命名propertyId参数,那么您的php脚本应该选择它。

data: {
    type: 'prop_address',
    propertyId: $propertyId
}

如果您将来遇到这些问题(脚本可以使用硬编码的值,但是当它从其他地方传递时没有),开始调试的好地方就是拥有php脚本{{1或print_r($_POST)以确保您通过您认为的参数。

答案 3 :(得分:0)

您将$ propertyId分配给错误的密钥:

应该是:

...
data: {
    type:'prop_address',
    propertyId: $propertyId
    // $propertyId: $propertyId
 },
...