2016-06-11 71 views
0

我正在構建一個Javascript/jQuery和AJAX網站。然而,在測試時,我遇到了以下錯誤:jQuery,JavaScript - 網絡錯誤?

Timestamp: 6/11/2016 10:13:45 AM 
Error: NetworkError: A network error occurred. 

對我來說,最明顯的罪魁禍首將是AJAX調用我的腳本製作;不過,我試着評論它,但仍然收到同樣的錯誤。首次加載網站時,它會顯示三個警報框(選擇=類別& detail = test等等),但隨後會顯示錯誤,更改選擇不會觸發警報。

這是我的主網頁:

<?php 
include('header.php'); 
?> 

<div id='mainContent'> 

<?php /* if(!$_SESSION['admin']) { 
echo "<p>You do not have permission to view this page!</p>"; 
} else { */ 
echo "<form method='post' action='addItem.php'> 

<div class='form-group'> 
<label>Category</label> 
<select id='categorySelection' name='categorySelection'> 
<option value=1>Playstation</option> 
<option value=2>Wii</option> 
<option value=3>Gamecube</option> 
<option value=4>N64</option> 
<option value=5>Other Console</option> 
<option value=6>DS</option> 
<option value=7>Game Boy</option> 
<option value=8>Other Handheld</option> 
<option value=9>DVD</option> 
</select> 
</div> 

<div class='form-group'> 
<label>Item</label> 
<select id='itemSelection' name='itemSelection'> 
</select> 
</div> 

<div class='form-group'> 
<label>Condition:</label> 
<select id='conditionSelection' name='conditionSelection'> 
<option value=1>Acceptable</option> 
<option value=2>Good</option> 
<option value=3>Very Good</option> 
<option value=4>New</option> 
</select> 
</div> 

<div class='form-group'> 
<label>Price: </label> 
<input id='itemPrice' type='text' name='itemPrice' /> 
</div> 

<div class='form-group'> 
<label>Description: </label> 
<textarea id='itemDescription' name='itemDescription'></textarea> 
</div> 
</form>"; 
// } 
?> 

</div> 
<script> 

function selectionHandler(selectedAction, selectedValue) { 
var gameData = "selection=" + selectedAction + "&detail=" + selectedValue; 

alert(gameData); 


$.ajax({ 
type: 'POST', 
url: 'filter.php', 
data: gameData, 
success: function(returnData) { 

if(selectedAction == 'category') { 
$('#itemSelection').html(returnData); 
} if(selectedAction == 'game') { 
$('#itemPrice').val(returnData) 
} else { 
$('itemDescription').val(returnData); 
} 

} // end return 
}); // end ajax 
} // end handler 

$(document).ready(function() { 
$("#categorySelection").on("change", selectionHandler('category', "test")) ; 
$("#itemSelection").on('change', selectionHandler('game', "test")); 
$("#conditionSelection").on('change', selectionHandler('condition', "test")); 

}); // end ready 
</script> 
<?php 

include('footer.php'); 
?> 

和我的PHP

<?php 
include("header.php"); 
$db = new pdoAccess("localhost","root",""); 

$selection = $_POST['selection']; // either game, category, or condition 

$detail = $_POST['detail'] // either categoryID or ISBN/Item ID 
if($selection == 'category') { 
$products = $db->filterByCategory($detail); 
$html = ""; 
foreach($products as $product) { 
$html += "<option value={$product->upc)}>$product->title</option>"; 
} 
return $html; 
} elseif ($selection = 'game') { 
return $db->getProductPrice($detail); 
} else { 
return $db->getCategoryDescription($detail); 
} 

?> 

謝謝!

編輯:應該指出,我也試過其他事件,如重點和選擇。同樣的問題。

+1

你確定錯誤不是來自你的PHP?像pdo db連接一樣? – Chris

+0

謝謝,但我很確定。唯一的頁面腳本是'filter.php',我將其與整個AJAX請求一起註釋掉了。網站的其他部分工作正常,如果我的PDO連接有問題,它肯定會失敗。奇怪的是,我確實在其他頁面上出現了這個錯誤 - 我從未注意到它,因爲它不影響功能。 CDN鏈接(對於jQuery)可能是什麼問題?再次感謝。 – KellyMarchewa

+1

我會建議將您的ajax代碼移入您的文檔就緒區塊。它有可能試圖使用尚未加載的東西。更好的辦法是把它移到一個函數中,然後錯誤地再次調用函數。例如,如果有人丟失了互聯網連接,它將繼續嘗試,直到他們再次連接。除此之外,我不知道。你可以檢查狀態變量,如果它等於成功,然後執行你的代碼,如果不是console.log測試的東西。 – Chris

回答

0

在PHP字符串cocatinating是點.和使用引號也改變這裏這樣

$html .= "<option value='{$product->upc)}'>{$product->title}</option>"; 

也可以使用雙==這裏比較

} else if ($selection == 'game') { 

使用echo的阿賈克斯,而不是返回

+0

感謝您指出(我甚至還沒有調試PHP);但它不能解決問題。我爲PHP指定了完整的,錯誤的和成功的函數。第一次(當頁面)加載時,完成和成功函數都會觸發,但在此之後,它就好像JavaScript'中斷'一樣。更改選擇不會產生第一條警報消息。不過謝謝。 – KellyMarchewa

+0

您從哪裏打電話給selectionHandler – C2486

+0

在ajax中使用echo而不是返回 – C2486