2016-06-11 47 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