问题:通过我的addData()
函数传递的参数中有一个连字符;想想“12345678-9”。每当传递的数据都有连字符时,我的应用程序上会弹出Ajax Fail!
警告框。但是,每当我将$_GET
变量硬编码为没有连字符的字符串或数字时,我的应用程序的这部分就可以工作了。我已经将它缩小到连字符导致此错误的可能事实。请参阅下面的代码。
HTML 的
<button id="add-analysis-button" onClick="addData( $( '#click-number' ).text() )">Add Data</button>
的Javascript / jQuery的/ 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(文件:add-data.php)
<?php
echo $_GET['oShip'];
我尝试了什么:我尝试在addData()
函数中使用javascript的替换函数来替换带有HTML编号的连字符。例如:a_ship = a_ship.replace('-', '-')
。这似乎允许代码部分工作,但然后删除连字符后的数字,这导致我进入另一个问题。
问题:如何在不引起错误的情况下将连字符传递给jQuery的AJAX?
答案 0 :(得分:2)
改变这个:
mimeType: 'json',
到此:
contentType: 'json',
-Or -
完全删除mimeType将解决此问题。
答案 1 :(得分:1)
用此替换您的代码并回复结果(可编辑的小提琴:http://jsfiddle.net/caLu0kj9/)。请注意,在ajax请求中添加dataType
并删除HTML代码中的onclick
事件。
HTML:
<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);
}
});
}