问题:通过我的addData()
函数传递的参数中有一个连字符;认为"12345678 - 9"。每当传递的数据有一个连字符,我得到Ajax Fail!
警报框弹出在我的应用程序。然而,每当我硬编码的$_GET
变量是一个字符串或数字没有连字符,我的应用程序的这一部分工作。我已经把范围缩小到连字符可能导致这个错误。
HTML
<button id="add-analysis-button" onClick="addData( $( '#click-number' ).text() )">Add Data</button>
/jQuery Javascript/AJAX
function addData(a_ship) {
$.ajax({
type: 'GET',
url: 'models/add-data.php?oShip=' + a_ship,
mimeType: 'json',
success: function(data) {
alert( data );
},
error: function() {
alert('Ajax Fail!');
}
});
PHP (File: add-data.php)
<?php
echo $_GET['oShip'];
我尝试过的:我尝试过在addData()
函数中使用javascript的替换函数将连字符替换为HTML数字。例:a_ship = a_ship.replace('-', '-')
。这似乎允许代码部分工作,但随后去掉了连字符后面的数字,这使我陷入另一个问题。
问题:我如何通过连字符从jQuery的AJAX不引起错误?
修改如下:
mimeType: 'json',
:
contentType: 'json',
或者
删除mimeType将解决这个问题。
用此代码替换您的代码并回复结果(可编辑的提琴在这里:http://jsfiddle.net/caLu0kj9/)。注意,在ajax请求中添加了dataType
,并在HTML代码中删除了onclick
事件。
<div id="click-number">12345678-9</div>
<button id="add-analysis-button">Add Data</button>
JavaScript: $("#add-analysis-button").click(function(){
addData($( '#click-number').text());
});
function addData(a_ship) {
$.ajax({
type: 'GET',
url: 'models/add-data.php?oShip=' + encodeURIComponent(a_ship),
dataType: 'json',
beforeSend: function(jqXHR, settings) {
jqXHR.url = settings.url;
},
success: function(jqXHR, data) {
alert("SUCCESS! " + data + " " + jqXHR.url);
},
error: function(jqXHR) {
alert("FAIL! " + jqXHR.url);
}
});
}