2015-08-21 154 views
0

我想要成功函數來獲取它應該從PHP文件接收到的字符串。爲什麼我返回[Object,object]而不是字符串?

PHP抱怨「mysql_fetch_array()期望參數1是一個資源,而是給出布爾值」。我認爲這就是成功功能不會觸發的原因。

我在做什麼錯?

jQuery的:

var string = "something to be inserted"; 
$.ajax({ 
    url: '...', 
    type: 'post', 
    dataType: 'json', 
    data: {toBeInserted: string.toLowerCase()}, 
    success: function(data) { 
     console.log(data); 
     // some code that is to work with data 
    } 
}); 

的PHP:

include 'serverStuff.php'; 
// A separate file with $con defined in it. Assume this works. 

mysql_query("SET NAMES 'utf8'", $con); 

// inserts the $_POST['toBeInserted'] into the database just fine 

// assume the following are defined: 
// (string) $user_name, (string) $now, (string) $statement 

$sql=("SELECT * FROM table WHERE user_name=$user_name AND date=$now AND statement = $statement"); 
$result=mysql_query($sql, $con); 

if ($row = mysql_fetch_array($result)) { 
    $new_id = (int) $row['id']; 
} 

mysql_close($con); 

echo json_encode($new_id.'_'.$now); 
+1

嘗試'的console.log(JSON.stringify(數據));'相反,控制檯將打印對象作爲[對象,對象],如果你只是打印對象本身。 – yvesmancera

+0

完成。這是日誌:{「readyState」:4,「responseText」:「\」67_18:52:54 21-8-2015 \「」,「status」:200,「statusText」:「OK」} – VHK

回答

2

字符串需要在SQL進行轉義:

"SELECT * FROM table WHERE user_name='$user_name' AND date='$now' AND statement = '$statement'" 

它說: 「布爾給出」 因爲通過the specification如果出現錯誤,則返回false。 (還要考慮聽取文檔中棄用注)

+0

逃脫他們,這次得到了不同的回覆文字: 「」66_18:49:55 21-8-2015「」。是的,雙雙引號。這些來自數據庫,所以現在有很多工作。 – VHK

+0

@VHK這很好,這意味着它的工作,對吧? '66'是行的id? – Stryner

+0

它到達數據庫,是的,但jQuery沒有將返回的對象作爲字符串拾取,因此後續代碼無法工作。 Yvesmancera讓我記錄對象字符串:{「readyState」:4,「responseText」:「\」67_18:52:54 21-8-2015 \「」,「status」:200,「statusText」:「OK」 }。這是否告訴你我失蹤的任何事情?是的:66/67 /等是連接的ID。 – VHK

0

對於雙雙引號問題使用本:

echo json_encode(array('result' => $new_id.'_'.$now)); 

而且data.result在JS

+0

日誌「未定義」。 – VHK

+0

什麼是未定義的,數據或data.result?你的php文件是UTF-8格式? –

+0

數據。結果未定義。是的它在UTF8。 – VHK

0

好吧,我仍然不知道什麼導致此問題,但解決方法如下:

  • 將ajax函數的數據類型從'json'切換到'html';
  • 將echo(json_encode(「string」))改爲echo(「string」);
  • 撿起了繩子在成功的功能如下:

代碼:

$.ajax({ 
    // ... 
    success: function(data) { 
     console.log(data.responseText); 
    } 
}); 
相關問題